RFCOMM 장치가 누락된 것 같습니다(dev/rfcomm0).

RFCOMM 장치가 누락된 것 같습니다(dev/rfcomm0).

블루투스를 통해 직렬 명령을 보내고 받으려고 합니다. pyBluez 라이브러리를 설치했습니다. 문제는 rfcomm.conf가 존재하는 동안 /dev/ 디렉토리에 rfcomm0이 없다는 것입니다. 재부팅했는데 변화가 없네요.

다음을 실행하면 권한 거부 오류가 발생합니다.

sudo echo "This is a test" > /dev/rfcomm0

USB Bluetooth 모듈이 연결된 후 rfcomm이 /dev에 자동으로 추가되지 않는 이유는 무엇입니까? Bluetooth 모듈은 호환되며 명령줄을 통해 장치를 검색하고 찾을 수 있습니다. Bluez 및 bluez-utils가 이미 설치되었습니다.

답변1

블루투스 서비스가 시작되더라도 /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

왜 이 작업이 자동으로 수행되지 않습니까? 먼저, 블루투스 서비스는 데몬을 시작해야 하며, 그것이 init 목록에 없으면 터미널로 가서 이를 포함하도록 init 목록을 재구성할 때까지 수동으로 시작해야 합니다.

그 이유는 컴퓨터에서 모든 구성을 자동으로 만들기 전에 구성을 테스트할 수 있도록 하기 위함입니다. 그 이유는 OS가 작동하는 방식, 사용자와 그룹에 통신 권한이 할당되는 방식 등에 대한 Unix의 개념에 기반을 두고 있습니다.

관련 정보