bluez 5.44부터 bluez-utils(및 hcitool 등)에 포함된 rfcomm 바이너리는 더 이상 사용되지 않는 것으로 간주되며 이제부터 AUR에서 제공하는 bluez-utils-compat 패키지에만 포함됩니다.
rfcomm 커널 모듈을 사용하여 Bluetooth 장치를 직렬 포트에 바인딩할 수 있는 유사한 명령줄 응용 프로그램이 있습니까? 아니면 지금부터 PyBluez 또는 유사한 라이브러리를 사용해야 합니까?
후자라면 어떤 Python 3 라이브러리를 추천하시겠습니까?
아는 사람이 있으면 왜 그렇게 많은 bluez-util이 갑자기 더 이상 사용되지 않는 것으로 간주되는지 알려주십시오. 관련 정보를 찾을 수 없습니다.
이것건축 위키피디아rfcomm 기능의 새로운 구현을 사용하는 것이 좋습니다.D-Bus 프로필 1 API.
답변1
또 다른 가능한 해결책을 찾았습니다. 나는 누군가의 github 저장소를 조사하여 이것을 발견했습니다. 이것은 python3의 내장 소켓 모듈을 사용합니다.
전제 조건:
- <어댑터 주소> 주소에 작동 중인 어댑터가 있습니다.
- 대상 Bluetooth 장치는 <장치 주소>에 있습니다.
- 장치가 고정되었습니다.
즉, rfcomm의 동일한 지점을 사용할 수 있습니다.
$python3
>>> import socket
>>> sock = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
>>> adapter = '00:11:22:33:44:55' #<adapter address>
>>> device = '55:44:33:22:11:00' #<device address>
>>> sock.bind((adapter, 1))
>>> sock.connect((device, 1))
## If not pinned it will ask you. You can use/adapt the bluez simple-agent for headless pinning
>>> sock.send(b'hello\n')
>>> sock.recv(100)
>>> sock.close()
답변2
나는 최근에 발견했다bluez 도구Bluez의 현재 D-Bus API를 사용하여 누락된 기능을 구현하는 것을 목표로 하는 프로젝트입니다.
Bluez-tools는 커뮤니티 저장소의 ArchLinux에서 사용할 수 있습니다. 나는 이것을 아직 테스트하지 않았으며 github 페이지에는 아직 베타 버전이라고 나와 있습니다. 그러나 문서에 따르면 bt-serial은 이전 bluez rfcomm을 대체할 수 있어야 하며 bt-adapter+bt-agent+bt-device에는 hcitool의 기능이 있습니다.
편집: 문제 목록과 마지막 커밋을 보면 bluez-tools가 더 이상 적극적으로 유지 관리되지 않는 것으로 보입니다.
답변3
나는 이 문제에 주목하고 싶다:
- 저것이 github 프로젝트일부 rfcomm 기능이 포함되어 있습니다. (bluez 테스트 파일 기준)
bluez 프로젝트 자체에는 여전히 rfcomm.c 파일이 포함되어 있으며 다음을 사용하여 쉽게 컴파일할 수 있습니다.
gcc -lbluetooth rfcomm.c -orfcomm -DVERSION=xyz
...파일 하나만 있으면 전체 bluez 프로젝트를 컴파일할 필요가 없습니다. 여기서 xyz는 다운로드된 버전입니다.Lanzitar.xz소스 코드(현재 5.46). 다운로드하기 전에 자신을 확인 bluetoothd -v
하고 일치하는 소스를 다운로드해야 합니다. bluez-libs는 성공적으로 컴파일되는 종속성일 뿐입니다.
armv7(라즈베리 2)에는 rfcomm이 필요하고 rfcomm용 aur 패키지는 없습니다. 이것이 유일한 방법이지만 잘 작동합니다.
rfcomm이 더 이상 사용되지 않는 이유와 좋은 대안이 없는 이유와 직렬 포트 주변의 반대 방향인 Bluetooth와 통신하는 방법을 여전히 잘 모르겠습니다. 왜냐하면 당신이 Python 전문가이자 DBUS 전문가이더라도... (위에서 언급한 프로젝트 소유자가 아마도 그럴 것입니다)... 여전히 fifo만 이런 방식으로 제공되며 /dev/의 실제 문자 장치는 제공되지 않습니다.. 다른 모든 프로그램 (아두이노 등)에서 확인하고 사용할 수 있습니다.
답변4
또 다른 옵션은 "블루 맨"직렬 포트 SPP 연결을 열 수 있는 장치 GUI를 제공합니다. "연결" -> "직렬 포트"를 클릭하면 /dev/rfcommN 장치가 생성되고 이를 적합하게 사용할 수 있습니다.