2017-10-20 28 views
1

누군가가 내가 라스베리 파이 3 모델 B와 함께 BLE 연결에서 중앙 장치로 작동하는 한 가지 문제를 설명 할 수 있다면 감사하겠습니다. 주변 장치.라즈베리 Pi3 BLE 연결 간격 당 하나의 패킷을받습니다 - gatttool/hcitool

먼저 내가 successsfully 두 기기를 연결하고 folllowing hcitool/gatttool 명령을 사용하여 중앙 장치에 알림을 사용 : 그 후

sudo hciconfig hci0 up 
sudo gatttool --adapter=hci0 --device=XX:XX:XX:XX:XX:XX --adr_type=random --mtu=23 -I 
[][LE]> connect 
[][LE]> char-write-req 0x000c 0100 

을 난 라즈베리 PI3 모델 B에 대한 통지를 수신하고, 사용하기 시작 BLE 스니퍼, 나는 그것이 5 개의 BLE 패킷을 받았다는 것을 확인한다. 연결 간격 당 알림 값이있다. (그것은 정상이다.) 기본값은 54 (67,5ms)이다. 그러나, 한 번에 두 장치가 연결되어, 나는 다음과 같은 hcitool 명령을 사용하여 즉, 24 (30ms의)에 대한 연결 간격을 수정하기 위해 연결 매개 변수를 업데이트

sudo hcitool lecup --handle=XX --min=24 --max=24 

그리고 내가 발견 한 문제, 즉 한 번 연결 매개 변수가 업데이트되면 Raspberry Pi3 모델 B가 연결 간격 당 단 하나의 BLE 패킷을 받기 시작했는지 확인합니다 (이는 맞지 않습니다). 동일한 행동이 연결 구간의 더 높은 값, 즉 800 (1s)으로 연결 파라미터를 업데이트하는 것으로 관찰된다.

누구든지 내게 그 문제에 대한 설명을 줄 수 있습니까? 또한 누구든지이 절차를 재현하고 동일한 문제가 관찰되는지 확인할 수 있습니까?

감사

답변

1

hcitool의 lecup는 연결 이벤트 길이가 0 * ​​0.625 밀리되어야 컨트롤러 힌트 의미 0 max_ce_len min_ce_len 및 설정하는 hci_le_conn_update (http://elixir.free-electrons.com/linux/latest/source/net/bluetooth/hci_conn.c#L321)를 사용한다. 너는 그걸 원하지 않아. 전체 간격 동안 패킷을 계속 보내려면 연결 간격만큼 길어지기를 원합니다.

는 CE 길이를 설정하는 테스트 대신 원시 명령을 사용합니다 :

sudo hcitool cmd 0x08 0x13 0x40 0x00 0x18 0 0x18 0 0 0 0x60 0 0x30 0 0x30 0 

이 연결 구간 최소/최대 = 24 * 1.25 MS, 슬레이브 대기 시간, 핸들 0x0040에 대한 연결 매개 변수 업데이트 요청을 발행 = 0, 타임 아웃 = 960ms, CE 간격 최소/최대 = 48 * 0.625ms.

+0

안녕하세요 @ Emil, 답장을 보내 주셔서 감사합니다. ... 그래서 연결 이벤트 길이의 기본 최대 값과 최소값이 설정되어 있습니까? ...이 매개 변수가 처음에는 0으로 설정되지 않은 것은 확실합니다 ... Thaaanks! –

+0

안녕하세요. 내 명령으로 더 잘 작동 했니? 내 참조 파일을 볼 경우 \t cp.min_ce_len \t \t = cpu_to_le16 (0x0000);에 0으로 설정되어 있음을 알 수 있습니다. \t cp.max_ce_len \t \t = cpu_to_le16 (0x0000); – Emil

+0

안녕하세요 @ Emil, 네, 괜찮 았어!. 죄송합니다. 나는 hci_le_conn_update 함수가 min_ce_len 및 max_ce_len 값을 1로 설정한다는 Bluez 5.47의 hci.c 파일 (BLE 지원을 위해 배포본을 RPI 3 모델 B에서 실행 중임)에서 보았습니다. 그러나보고 된 실험의 초기 동작 , 그 중 하나는 연결 간격 (67,5ms로 설정) 당 최대 5 개의 패킷을 받았습니다 연결 이벤트 최대/최소 길이는 처음에는 그 값으로 설정되지 않는 것 같습니다. 그래서 연결 이벤트에 대한 기본 최대 값과 최소값이 설정됩니다. 감사합니다. –