l2cap sockets not properly multiplexed on ARM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I was talking to Marcel on the freenode chat and he suggested I post this issue to the mailing list...

I have some code where I make LE L2CAP connections to multiple sensor devices.  On my laptop and any other x86-like device I have no problems with the code and everything works correctly.  When I try to run the same code on several different ARM machines I have the same problem where the L2CAP sockets seem to get merged and all data returns on the last connected one.

Marcel asked for me to post the btmon logs of my problem but the logs essentially show that things are working correctly because I think it's getting all the data on the HCI level.  You can see the 2 sensors have connection handles 64 and 65.  However here is some output from my code (it's all coming down one file descriptor corresponding to the "78:c5:e5:6c:47:d3" device and the earlier file descriptor now receives nothing):

2013-10-28 20:18:54+0000 [-] 78:c5:e5:6c:47:d3 x-axis: -1
2013-10-28 20:18:54+0000 [-] 78:c5:e5:6c:47:d3 y-axis: -9
2013-10-28 20:18:54+0000 [-] 78:c5:e5:6c:47:d3 z-axis: -64
2013-10-28 20:18:54+0000 [-] 78:c5:e5:6c:47:d3 x-axis: -7
2013-10-28 20:18:54+0000 [-] 78:c5:e5:6c:47:d3 y-axis: -51
2013-10-28 20:18:54+0000 [-] 78:c5:e5:6c:47:d3 x-axis: 2
2013-10-28 20:18:54+0000 [-] 78:c5:e5:6c:47:d3 y-axis: -8
2013-10-28 20:19:10+0000 [-] 78:c5:e5:6c:47:d3 x-axis: -7
2013-10-28 20:19:10+0000 [-] 78:c5:e5:6c:47:d3 x-axis: -1

which corresponds to the btmon output:
[hci0] 20:18:54.359162 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2a 00 ff                          .....*..        
[hci0] 20:18:54.359454 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2e 00 f7                          ........        
[hci0] 20:18:54.360633 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 32 00 c0                          .....2..        
[hci0] 20:18:54.561663 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2a 00 f9                          .....*..        
[hci0] 20:18:54.564898 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2e 00 cd                          ........        
[hci0] 20:18:54.696646 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2a 00 02                          .....*..        
[hci0] 20:18:54.698873 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2e 00 f8                          ........        
[hci0] 20:19:10.383417 > ACL Data: handle 65 flags 0x02 dlen 8
            04 00 04 00 1b 2a 00 f9                          .....*..        
[hci0] 20:19:10.439511 > ACL Data: handle 65 flags 0x02 dlen 8
            04 00 04 00 1b 2a 00 ff                          .....*..        


The ATT_OP_WRITE_CMD command to get the notifications are sent down the L2CAP sockets so communication towards the sensors seems to work correctly, it's just the data coming the other way is the issue.

-Tim
Bluetooth monitor ver 4.101
[hci0] 20:18:14.338542 = New Index: 00:02:72:3E:7F:9B (BR/EDR,USB,hci0)
[hci0] 20:18:25.230025 < HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7
            00 10 00 10 00 00 00                             .......         
[hci0] 20:18:25.230989 > HCI Event: Command Complete (0x0e) plen 4
            01 0b 20 00                                      .. .            
[hci0] 20:18:25.231782 < HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2
            01 00                                            ..              
[hci0] 20:18:25.232986 > HCI Event: Command Complete (0x0e) plen 4
            01 0c 20 00                                      .. .            
{hci0} 20:18:25.233050 @ Discovering: 0x01 (0)
[hci0] 20:18:37.428871 > HCI Event: LE Meta Event (0x3e) plen 15
            02 01 00 00 a2 47 6c e5 c5 78 03 02 01 05 a6     .....Gl..x..... 
{hci0} 20:18:37.429647 @ Device Found: 78:C5:E5:6C:47:A2 (1) rssi -90 flags 0x0000
            02 01 05                                         ...             
[hci0] 20:18:37.637286 > HCI Event: LE Meta Event (0x3e) plen 15
            02 01 00 00 a2 47 6c e5 c5 78 03 02 01 05 a4     .....Gl..x..... 
{hci0} 20:18:37.638128 @ Device Found: 78:C5:E5:6C:47:A2 (1) rssi -92 flags 0x0000
            02 01 05                                         ...             
[hci0] 20:18:37.661732 < HCI Command: LE Create Connection (0x08|0x000d) plen 25
            60 00 30 00 00 00 a2 47 6c e5 c5 78 00 28 00 38  `.0....Gl..x.(.8
            00 00 00 2a 00 00 00 00 00                       ...*.....       
[hci0] 20:18:37.663267 > HCI Event: Command Status (0x0f) plen 4
            00 01 0d 20                                      ...             
[hci0] 20:18:37.743164 > HCI Event: LE Meta Event (0x3e) plen 19
            01 00 40 00 00 00 a2 47 6c e5 c5 78 36 00 00 00  ..@....Gl..x6...
            2a 00 05                                         *..             
{hci0} 20:18:37.746828 @ Device Connected: 78:C5:E5:6C:47:A2 (1) flags 0x0000
[hci0] 20:18:37.802830 < ACL Data: handle 64 flags 0x00 dlen 9
            05 00 04 00 52 2b 00 01 00                       ....R+...       
[hci0] 20:18:37.830466 < ACL Data: handle 64 flags 0x00 dlen 9
            05 00 04 00 52 33 00 01 00                       ....R3...       
[hci0] 20:18:37.831004 < ACL Data: handle 64 flags 0x00 dlen 9
            05 00 04 00 52 2f 00 01 00                       ....R/...       
[hci0] 20:18:37.831305 < ACL Data: handle 64 flags 0x00 dlen 9
            05 00 04 00 52 20 00 01 00                       ....R ...       
[hci0] 20:18:37.831434 < ACL Data: handle 64 flags 0x00 dlen 13
            09 00 04 00 0e 2a 00 32 00 2e 00 1f 00           .....*.2.....   
[hci0] 20:18:37.821898 > ACL Data: handle 64 flags 0x02 dlen 16
            0c 00 05 00 12 01 08 00 10 00 20 00 00 00 2c 01  .......... ...,.
[hci0] 20:18:37.832516 < ACL Data: handle 64 flags 0x00 dlen 10
            06 00 05 00 13 01 02 00 00 00                    ..........      
[hci0] 20:18:37.832721 < HCI Command: LE Connection Update (0x08|0x0013) plen 14
            40 00 10 00 20 00 00 00 2c 01 01 00 01 00        @... ...,.....  
[hci0] 20:18:37.865257 > HCI Event: Command Status (0x0f) plen 4
            00 01 13 20                                      ...             
[hci0] 20:18:37.889123 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2e 00 dd                          ........        
[hci0] 20:18:37.889670 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 32 00 cd                          .....2..        
[hci0] 20:18:37.957320 > HCI Event: Number of Completed Packets (0x13) plen 5
            01 40 00 02 00                                   .@...           
[hci0] 20:18:37.959205 > HCI Event: Number of Completed Packets (0x13) plen 5
            01 40 00 02 00                                   .@...           
[hci0] 20:18:38.092097 > ACL Data: handle 64 flags 0x02 dlen 9
            05 00 04 00 0f 00 cd dd 51                       ........Q       
[hci0] 20:18:38.094177 > HCI Event: Number of Completed Packets (0x13) plen 5
            01 40 00 02 00                                   .@...           
[hci0] 20:18:38.094463 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2a 00 c8                          .....*..        
[hci0] 20:18:38.094586 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2e 00 85                          ........        
[hci0] 20:18:38.159057 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 32 00 16                          .....2..        
[hci0] 20:18:38.160390 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2a 00 02                          .....*..        
[hci0] 20:18:38.160518 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2e 00 fe                          ........        
[hci0] 20:18:38.194021 > HCI Event: LE Meta Event (0x3e) plen 15
            02 01 00 00 a2 47 6c e5 c5 78 03 02 01 05 a9     .....Gl..x..... 
{hci0} 20:18:38.194736 @ Device Found: 78:C5:E5:6C:47:A2 (1) rssi -87 flags 0x0000
            02 01 05                                         ...             
[hci0] 20:18:38.294342 > HCI Event: Disconn Complete (0x05) plen 4
            00 40 00 13                                      .@..            
{hci0} 20:18:38.296381 @ Device Disconnected: 78:C5:E5:6C:47:A2 (1)
[hci0] 20:18:38.299183 > HCI Event: LE Meta Event (0x3e) plen 15
            02 01 00 00 a2 47 6c e5 c5 78 03 02 01 05 ba     .....Gl..x..... 
{hci0} 20:18:38.323501 @ Device Found: 78:C5:E5:6C:47:A2 (1) rssi -70 flags 0x0000
            02 01 05                                         ...             
[hci0] 20:18:38.402894 > HCI Event: LE Meta Event (0x3e) plen 15
            02 01 00 00 a2 47 6c e5 c5 78 03 02 01 05 b3     .....Gl..x..... 
{hci0} 20:18:38.403917 @ Device Found: 78:C5:E5:6C:47:A2 (1) rssi -77 flags 0x0000
            02 01 05                                         ...             
[hci0] 20:18:38.465634 < HCI Command: LE Create Connection (0x08|0x000d) plen 25
            60 00 30 00 00 00 a2 47 6c e5 c5 78 00 28 00 38  `.0....Gl..x.(.8
            00 00 00 2a 00 00 00 00 00                       ...*.....       
[hci0] 20:18:38.467407 > HCI Event: Command Status (0x0f) plen 4
            00 01 0d 20                                      ...             
[hci0] 20:18:38.511164 > HCI Event: LE Meta Event (0x3e) plen 15
            02 01 00 00 a2 47 6c e5 c5 78 03 02 01 05 ba     .....Gl..x..... 
{hci0} 20:18:38.514909 @ Device Found: 78:C5:E5:6C:47:A2 (1) rssi -70 flags 0x0000
            02 01 05                                         ...             
[hci0] 20:18:38.615794 > HCI Event: LE Meta Event (0x3e) plen 15
            02 01 00 00 a2 47 6c e5 c5 78 03 02 01 05 b4     .....Gl..x..... 
{hci0} 20:18:38.617512 @ Device Found: 78:C5:E5:6C:47:A2 (1) rssi -76 flags 0x0000
            02 01 05                                         ...             
[hci0] 20:18:38.718783 > HCI Event: LE Meta Event (0x3e) plen 19
            01 00 40 00 00 00 a2 47 6c e5 c5 78 36 00 00 00  ..@....Gl..x6...
            2a 00 05                                         *..             
{hci0} 20:18:38.722401 @ Device Connected: 78:C5:E5:6C:47:A2 (1) flags 0x0000
[hci0] 20:18:38.766767 > ACL Data: handle 64 flags 0x02 dlen 16
            0c 00 05 00 12 02 08 00 10 00 20 00 00 00 2c 01  .......... ...,.
[hci0] 20:18:38.770494 < ACL Data: handle 64 flags 0x00 dlen 10
            06 00 05 00 13 02 02 00 00 00                    ..........      
[hci0] 20:18:38.770750 < HCI Command: LE Connection Update (0x08|0x0013) plen 14
            40 00 10 00 20 00 00 00 2c 01 01 00 01 00        @... ...,.....  
[hci0] 20:18:38.774270 > HCI Event: Command Status (0x0f) plen 4
            00 01 13 20                                      ...             
[hci0] 20:18:38.782653 < ACL Data: handle 64 flags 0x00 dlen 9
            05 00 04 00 52 2b 00 01 00                       ....R+...       
[hci0] 20:18:38.810351 < ACL Data: handle 64 flags 0x00 dlen 9
            05 00 04 00 52 33 00 01 00                       ....R3...       
[hci0] 20:18:38.813370 < ACL Data: handle 64 flags 0x00 dlen 9
            05 00 04 00 52 2f 00 01 00                       ....R/...       
[hci0] 20:18:38.815045 < ACL Data: handle 64 flags 0x00 dlen 9
            05 00 04 00 52 20 00 01 00                       ....R ...       
[hci0] 20:18:38.825889 < ACL Data: handle 64 flags 0x00 dlen 13
            09 00 04 00 0e 2a 00 32 00 2e 00 1f 00           .....*.2.....   
[hci0] 20:18:38.834141 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2e 00 f8                          ........        
[hci0] 20:18:38.834673 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 32 00 c1                          .....2..        
[hci0] 20:18:38.970272 > HCI Event: Number of Completed Packets (0x13) plen 5
            01 40 00 02 00                                   .@...           
[hci0] 20:18:38.972162 > HCI Event: Number of Completed Packets (0x13) plen 5
            01 40 00 02 00                                   .@...           
[hci0] 20:18:39.038229 > HCI Event: Number of Completed Packets (0x13) plen 5
            01 40 00 02 00                                   .@...           
[hci0] 20:18:39.104245 > ACL Data: handle 64 flags 0x02 dlen 9
            05 00 04 00 0f 02 c1 f8 4a                       ........J       
[hci0] 20:18:47.897759 > HCI Event: LE Meta Event (0x3e) plen 15
            02 01 00 00 d3 47 6c e5 c5 78 03 02 01 05 b1     .....Gl..x..... 
{hci0} 20:18:47.898481 @ Device Found: 78:C5:E5:6C:47:D3 (1) rssi -79 flags 0x0000
            02 01 05                                         ...             
[hci0] 20:18:48.006000 > HCI Event: LE Meta Event (0x3e) plen 15
            02 01 00 00 d3 47 6c e5 c5 78 03 02 01 05 b1     .....Gl..x..... 
{hci0} 20:18:48.006766 @ Device Found: 78:C5:E5:6C:47:D3 (1) rssi -79 flags 0x0000
            02 01 05                                         ...             
[hci0] 20:18:48.022528 < HCI Command: LE Create Connection (0x08|0x000d) plen 25
            60 00 30 00 00 00 d3 47 6c e5 c5 78 00 28 00 38  `.0....Gl..x.(.8
            00 00 00 2a 00 00 00 00 00                       ...*.....       
[hci0] 20:18:48.024317 > HCI Event: Command Status (0x0f) plen 4
            00 01 0d 20                                      ...             
[hci0] 20:18:48.111376 > HCI Event: LE Meta Event (0x3e) plen 15
            02 01 00 00 d3 47 6c e5 c5 78 03 02 01 05 b3     .....Gl..x..... 
{hci0} 20:18:48.114928 @ Device Found: 78:C5:E5:6C:47:D3 (1) rssi -77 flags 0x0000
            02 01 05                                         ...             
[hci0] 20:18:48.212831 > HCI Event: LE Meta Event (0x3e) plen 15
            02 01 00 00 d3 47 6c e5 c5 78 03 02 01 05 b4     .....Gl..x..... 
{hci0} 20:18:48.216182 @ Device Found: 78:C5:E5:6C:47:D3 (1) rssi -76 flags 0x0000
            02 01 05                                         ...             
[hci0] 20:18:48.323916 > HCI Event: LE Meta Event (0x3e) plen 19
            01 00 41 00 00 00 d3 47 6c e5 c5 78 2d 00 00 00  ..A....Gl..x-...
            2a 00 05                                         *..             
{hci0} 20:18:48.327495 @ Device Connected: 78:C5:E5:6C:47:D3 (1) flags 0x0000
[hci0] 20:18:48.333284 > ACL Data: handle 65 flags 0x02 dlen 16
            0c 00 05 00 12 01 08 00 10 00 20 00 00 00 2c 01  .......... ...,.
[hci0] 20:18:48.349300 < ACL Data: handle 65 flags 0x00 dlen 10
            06 00 05 00 13 01 02 00 00 00                    ..........      
[hci0] 20:18:48.352607 < HCI Command: LE Connection Update (0x08|0x0013) plen 14
            41 00 10 00 20 00 00 00 2c 01 01 00 01 00        A... ...,.....  
[hci0] 20:18:48.383669 < ACL Data: handle 65 flags 0x00 dlen 9
            05 00 04 00 52 2b 00 01 00                       ....R+...       
[hci0] 20:18:48.388568 < ACL Data: handle 65 flags 0x00 dlen 9
            05 00 04 00 52 33 00 01 00                       ....R3...       
[hci0] 20:18:48.387350 > HCI Event: Command Status (0x0f) plen 4
            00 01 13 20                                      ...             
[hci0] 20:18:48.418589 < ACL Data: handle 65 flags 0x00 dlen 9
            05 00 04 00 52 2f 00 01 00                       ....R/...       
[hci0] 20:18:48.425317 < ACL Data: handle 65 flags 0x00 dlen 9
            05 00 04 00 52 20 00 01 00                       ....R ...       
[hci0] 20:18:48.430541 < ACL Data: handle 65 flags 0x00 dlen 13
            09 00 04 00 0e 2a 00 32 00 2e 00 1f 00           .....*.2.....   
[hci0] 20:18:48.502347 > HCI Event: Number of Completed Packets (0x13) plen 5
            01 41 00 02 00                                   .A...           
[hci0] 20:18:48.504306 > HCI Event: Number of Completed Packets (0x13) plen 5
            01 41 00 02 00                                   .A...           
[hci0] 20:18:48.557946 > ACL Data: handle 65 flags 0x02 dlen 8
            04 00 04 00 1b 2e 00 f9                          ........        
[hci0] 20:18:48.559036 > ACL Data: handle 65 flags 0x02 dlen 8
            04 00 04 00 1b 32 00 bd                          .....2..        
[hci0] 20:18:48.560295 > HCI Event: Number of Completed Packets (0x13) plen 5
            01 41 00 02 00                                   .A...           
[hci0] 20:18:48.614345 > ACL Data: handle 65 flags 0x02 dlen 9
            05 00 04 00 0f 00 bd f9 46                       ........F       
[hci0] 20:18:54.291631 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2a 00 ee                          .....*..        
[hci0] 20:18:54.292623 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2e 00 ec                          ........        
[hci0] 20:18:54.292750 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 32 00 c9                          .....2..        
[hci0] 20:18:54.359162 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2a 00 ff                          .....*..        
[hci0] 20:18:54.359454 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2e 00 f7                          ........        
[hci0] 20:18:54.360633 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 32 00 c0                          .....2..        
[hci0] 20:18:54.561663 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2a 00 f9                          .....*..        
[hci0] 20:18:54.564898 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2e 00 cd                          ........        
[hci0] 20:18:54.696646 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2a 00 02                          .....*..        
[hci0] 20:18:54.698873 > ACL Data: handle 64 flags 0x02 dlen 8
            04 00 04 00 1b 2e 00 f8                          ........        
[hci0] 20:19:10.383417 > ACL Data: handle 65 flags 0x02 dlen 8
            04 00 04 00 1b 2a 00 f9                          .....*..        
[hci0] 20:19:10.439511 > ACL Data: handle 65 flags 0x02 dlen 8
            04 00 04 00 1b 2a 00 ff                          .....*..        
[hci0] 20:19:26.411547 < HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2
            00 00                                            ..              
[hci0] 20:19:26.414730 > HCI Event: Command Complete (0x0e) plen 4
            01 0c 20 00                                      .. .            
{hci0} 20:19:26.415494 @ Discovering: 0x00 (0)
[hci0] 20:19:28.193302 < HCI Command: Disconnect (0x01|0x0006) plen 3
            41 00 13                                         A..             
[hci0] 20:19:28.197097 > HCI Event: Command Status (0x0f) plen 4
            00 01 06 04                                      ....            
[hci0] 20:19:28.215607 > HCI Event: Disconn Complete (0x05) plen 4
            00 41 00 16                                      .A..            
{hci0} 20:19:28.216171 @ Device Disconnected: 78:C5:E5:6C:47:D3 (1)
[hci0] 20:19:28.313364 < HCI Command: Disconnect (0x01|0x0006) plen 3
            40 00 13                                         @..             
[hci0] 20:19:28.315515 > HCI Event: Command Status (0x0f) plen 4
            00 01 06 04                                      ....            
[hci0] 20:19:28.380626 > HCI Event: Disconn Complete (0x05) plen 4
            00 40 00 16                                      .@..            
{hci0} 20:19:28.381835 @ Device Disconnected: 78:C5:E5:6C:47:A2 (1)


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux