Raspberry Pi의 범위 내에 있는 모든 Bluetooth 장치를 지속적으로 나열해 보십시오. 트래픽을 모니터링할 필요가 없으며 장치 목록만 나열하면 됩니다. 광고 패킷(프레임?)에서 해당 정보를 얻을 수 있기를 바랍니다.
Ubuntu 18.04에서 몇 가지 실험을 수행했고 Wireshark에서 이러한 패킷을 볼 수 있었지만 시스템이 Bluetooth 장치를 적극적으로 검색하기 전까지는 볼 수 없었습니다. 이러한 광고를 수동적으로 수신할 수 있는 방법이 있습니까, 아니면 시스템이 지속적으로 광고를 검사하도록 할 수 있습니까? 쉘 스크립트에서 트리거할 수 있기를 원합니다.
이상적으로는 적절한 필터를 사용하여 tshark를 실행하고 해당 존재를 알리는 모든 장치를 포함하여 출력을 얻는 쉘 스크립트가 있습니다. 어떤 이유로 작동하지 않으면 이를 수행하기 위한 사용자 정의 프로그램을 작성하겠습니다.
장치를 검색하기 전에 시스템이 블루투스로부터 아무 것도 수신하지 못하는 이유와 스크립트에서 이 모드로 들어갈 수 있는 방법이 있는지 잘 모르겠습니다. 거기에서 나는 tshark가 내가 필요한 것을 할 수 있는지 아니면 프로그램이어야 하는지에 대한 질문을 던집니다.
지금까지 찾은 모든 Bluetooth 명령을 사용하면 GUI를 사용하여 스캔을 시작할 수 있습니다. 더 직접적으로 제어하는 방법을 알려주는 내용은 본 적이 없습니다.
답변1
글쎄, 이것이 효과가 있는 것 같은 내가 생각해낸 것입니다:
bluetoothctl scan on
sudo tshark -i bluetooth1 -Y "bthci_evt.le_meta_subevent == 0x2" -T fields -e bthci_evt.bd_addr -e bthci_evt.rssi
이를 통해 MAC 주소와 신호 강도를 알 수 있습니다. 그러나 파이에 내장된 블루투스를 사용할 때 잠시 후 작동이 멈춘다는 것을 발견했습니다. 서비스를 다시 시작하고 잠시 동안 다시 실행할 수 있지만 매번 매우 빠르게 종료됩니다.
그런데 저렴한 USB 블루투스 어댑터를 사용하면 영원히 돌아가는 것 같습니다. 그래서 bluetooth0 대신 bluetooth1을 스니핑하고 있습니다. 이것이 좋은 영구적인 해결책인지는 시간이 말해주겠지만, 지금까지는 효과가 있는 것 같습니다.
답변2
나는 노력했다털이 많은Raspberry Pi 4B에서 솔루션을 찾았지만 들어보니 bluetooth0
안정성 문제가 보이지 않아서 내장 블루투스 모듈이 잘 작동하고 외부 USB 블루투스 모듈이 필요하지 않습니다.
그러나 답변에 지정된 필터에 따르면 모든 블루투스 장치 목록을 가져올 수 없으며 BLE 장치만 표시할 수 있습니다.
이 명령을 사용하면 모든 장치(BLE 및 비BLE) 목록을 가져오고 해당 장치의 MAC 주소, RSSI 및 이름을 표시할 수 있습니다.
sudo tshark -i bluetooth0 -Y "(bthci_evt.code == 0x2f) || (bthci_evt.le_meta_subevent == 0x2 && btcommon.eir_ad.entry.device_name != '')" -T fields -e bthci_evt.bd_addr -e bthci_evt.rssi -e btcommon.eir_ad.entry.device_name
출력은 다음과 같습니다.
d1:6e:XX:XX:XX:XX -65 Mi Smart Band 4
8c:5a:XX:XX:XX:XX -43 Mi Soundbar
c5:9d:XX:XX:XX:XX -69 ENDURE
d1:6e:XX:XX:XX:XX -61 Mi Smart Band 4
8c:5a:XX:XX:XX:XX -47 Mi Soundbar
-e btcommon.cod.class_of_device -e btcommon.cod.minor_device_class
BLE가 아닌 장치에 대한 추가 정보를 표시하기 위해 명령 끝에 추가되었습니다 .
추가 리소스: