누군가가 내가 라스베리 파이 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)으로 연결 파라미터를 업데이트하는 것으로 관찰된다.
누구든지 내게 그 문제에 대한 설명을 줄 수 있습니까? 또한 누구든지이 절차를 재현하고 동일한 문제가 관찰되는지 확인할 수 있습니까?
감사
안녕하세요 @ Emil, 답장을 보내 주셔서 감사합니다. ... 그래서 연결 이벤트 길이의 기본 최대 값과 최소값이 설정되어 있습니까? ...이 매개 변수가 처음에는 0으로 설정되지 않은 것은 확실합니다 ... Thaaanks! –
안녕하세요. 내 명령으로 더 잘 작동 했니? 내 참조 파일을 볼 경우 \t cp.min_ce_len \t \t = cpu_to_le16 (0x0000);에 0으로 설정되어 있음을 알 수 있습니다. \t cp.max_ce_len \t \t = cpu_to_le16 (0x0000); – Emil
안녕하세요 @ Emil, 네, 괜찮 았어!. 죄송합니다. 나는 hci_le_conn_update 함수가 min_ce_len 및 max_ce_len 값을 1로 설정한다는 Bluez 5.47의 hci.c 파일 (BLE 지원을 위해 배포본을 RPI 3 모델 B에서 실행 중임)에서 보았습니다. 그러나보고 된 실험의 초기 동작 , 그 중 하나는 연결 간격 (67,5ms로 설정) 당 최대 5 개의 패킷을 받았습니다 연결 이벤트 최대/최소 길이는 처음에는 그 값으로 설정되지 않는 것 같습니다. 그래서 연결 이벤트에 대한 기본 최대 값과 최소값이 설정됩니다. 감사합니다. –