현재 사용되지 않는 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.