![RFCOMM 장치가 누락된 것 같습니다(dev/rfcomm0).](https://linux55.com/image/36376/RFCOMM%20%EC%9E%A5%EC%B9%98%EA%B0%80%20%EB%88%84%EB%9D%BD%EB%90%9C%20%EA%B2%83%20%EA%B0%99%EC%8A%B5%EB%8B%88%EB%8B%A4(dev%2Frfcomm0)..png)
블루투스를 통해 직렬 명령을 보내고 받으려고 합니다. pyBluez 라이브러리를 설치했습니다. 문제는 rfcomm.conf가 존재하지만 rfcomm0이 /dev/ 디렉터리에 없다는 것입니다. 다시 시작했지만 아무것도 바뀌지 않았습니다.
다음 명령을 실행하면 "권한 거부" 오류가 발생합니다.
sudo echo "This is a test" > /dev/rfcomm0
USB Bluetooth 모듈이 연결된 후 rfcomm이 /dev에 자동으로 추가되지 않는 이유는 무엇입니까? 블루투스 모듈은 호환되며 명령줄을 통해 장치를 검색하고 찾을 수 있습니다. Bluez 및 bluez-utils가 이미 설치되어 있습니다.
답변1
Bluetooth 서비스가 활성화되어 있어도 /dev/rfcomm0
장치가 자동으로 나타나지 않습니다.
/dev/rfcomm*
특정 장치 이름이 특정 Bluetooth 장치 + 채널 조합에 바인딩될 수 있도록 최소한 Bluetooth 하위 시스템은 Bluetooth 장치의 주소와 해당 채널을 알아야 합니다 .
rfcomm bind 0 <bdaddr> [channel]
를 사용하여 바인딩 할 수 있습니다 /dev/rfcomm0
. 채널 번호를 지정하지 않으면 기본적으로 채널 1이 사용됩니다. 사용 중인 버전이 rfcomm
여전히 /etc/bluetooth/rfcomm.conf
파일을 지원하고 파일에 쓸 주소 및 채널 정보가 있는 경우 /dev/rfcomm0
명령에서 주소 및 채널 정보를 생략할 수 있지만 바인딩하려면 명령을 사용해야 합니다.
BlueZ 도구의 새 버전은 더 이상 이 /etc/bluetooth/rfcomm.conf
파일을 기록하지 않는 것 같습니다. rfcomm bind
바인딩을 설정하려면 항상 명령의 전체 형식을 사용해야 할 수도 있습니다 . /etc/rc.local
재부팅 후에도 연결이 유지되지 않으므로 시작 시 자동으로 실행되도록 일부 사용자 정의 시작 스크립트 에 이러한 명령을 추가해야 할 수도 있습니다 .
BlueZ 내부의 마지막 주요 재구축으로 인해 파일과 같은 일부 RFCOMM 관련 기능이 손실된 것 같습니다 /etc/bluetooth/rfcomm.conf
. 그러나 최소한 rfcomm
명령은 여전히 사용 가능하며 작업을 수행합니다.
답변2
왜 이 작업이 자동으로 수행되지 않습니까? 먼저, Bluetooth 서비스는 데몬을 시작해야 합니다. 초기화 목록에 없으면 터미널로 가서 이를 포함하도록 초기화 목록을 재구성할 때까지 수동으로 시작해야 합니다.
그 이유는 컴퓨터에서 모든 구성을 자동화하기 전에 구성을 테스트할 수 있기 때문입니다. 그 이유는 Unix 운영 체제가 작동하는 방식과 사용자 및 그룹에 통신 권한을 할당하는 방식과 같은 개념을 기반으로 합니다.