현재 사용되지 않는 rfcomm 바이너리에 대한 대안


10

bluez 5.44부터 bluez-utils (hcitool과 같은 것)에 포함 된 rfcomm 바이너리는 더 이상 사용되지 않으며 AUR에서 제공하는 bluez-utils-compat 패키지에만 포함됩니다.

rfcomm 커널 모듈을 사용하여 블루투스 장치를 직렬 포트에 바인딩하는 비슷한 명령 줄 응용 프로그램이 있습니까? 아니면 지금부터 PyBluez 또는 유사한 라이브러리를 사용해야합니까?

후자가 경우에, 어떤 Python 3 라이브러리를 권장합니까?

그리고 누군가가 알고 있다면 왜 그렇게 많은 bluez-utils가 갑자기 폐기 된 것으로 간주되는지 말해주십시오. 나는 그것에 대해 아무것도 찾을 수 없었다.

ArchWiki은 새로운 사용 RFCOMM 기능을 구현하도록 권장 D-Bus 프로파일 1 API를 .

답변:


2

최근에 bluez-tools 프로젝트를 발견했습니다.이 프로젝트는 Bluez 현재 D 버스 API를 사용하여 손실 된 기능을 구현하는 것을 목표로합니다.

Bluez-tools는 커뮤니티 저장소의 ArchLinux에서 사용 가능합니다. 나는 이것을 테스트하지 않았으며 github 페이지 상태는 여전히 베타 버전입니다. 그러나 문서에 따르면 bt-serial은 이전 bluez rfcomm을 대체 할 수 있어야하며 bt-adapter + bt-agent + bt-device는 hcitool의 기능을 가지고 있습니다.

편집 : 문제 목록과 마지막 커밋을 볼 때 bluez-tools가 더 이상 적극적으로 유지되지 않는 것 같습니다.


1

다른 가능한 해결책을 찾았습니다. 나는 누군가의 git hub repo를 파고 들었다. 이것은 python3 내장 소켓 모듈을 사용합니다.

전제 조건 :

  1. <어댑터 주소> 주소에 작동중인 어댑터가 있습니다.
  2. <장치 주소>에 대상 Bluetooth 장치가 있습니다.
  3. 장치가 고정되었습니다.

즉, 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()

파이썬은 기본적으로 블루투스 시리얼 통신을 지원한다는 것을 아는 것이 좋습니다. 이 비교적 오래된 질문에 답변 해 주셔서 감사합니다.
— eike December

0

이 문제에 대해 언급하고 싶습니다.

  1. 것을 이 GitHub의 프로젝트는 RFCOMM 기능의 일부가 포함되어 있습니다. (bluez 테스트 파일을 기반으로 함).
  2. bluez 프로젝트 자체에는 여전히 다음과 같이 쉽게 컴파일 할 수있는 rfcomm.c 파일이 포함되어 있습니다.

    gcc -lbluetooth rfcomm.c -orfcomm -DVERSION = xyz

... 하나의 파일로 전체 bluez 프로젝트를 컴파일 할 필요가 없습니다. 여기서 xyz는 다운로드 된 bluez tar.xz 소스 코드의 버전입니다 (5.46). 다운로드하기 전에 먼저 자신을 확인 bluetoothd -v하고 일치하는 소스를 다운로드 해야 합니다. bluez-libs는 컴파일 성공을위한 의존성입니다.

armv7 (라즈베리 2)에 rfcomm이 필요했고 rfcomm에 대한 aur 패키지가 없으며 이것이 유일한 방법이지만 잘 작동합니다.

여전히 좋은 대안없이 rfcomm이 더 이상 사용되지 않는 이유와 직렬 포트 인 블루투스와의 대화 방법은 확실하지 않습니다. 파이썬 전문가와 DBUS 전문가가 있기 때문에 ... (위에서 언급 한 프로젝트 소유자와 같을 것입니다) ... / dev /의 실제 문자 장치가 아닌 fifo만이 제공되었습니다. )보고 작업 할 수 있습니다.


2
1. 프로젝트 페이지에는 "이 도구를 사용하는 일부 오래된 코드를 다시 구현하지 말아야한다"는 내용이 있습니다. 즉, 새 프로젝트에 bluez를 사용할 때 다른 접근 방식을 따르는 것이 좋습니다. 2. rfcomm을 직접 컴파일하는 방법은 여러 가지가 있는데, 내가 찾고있는 것은 사용되지 않는 이유와 지원되는 대안입니다.
— eike
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.