휴대 전화를 사용하여 Bluetooth 클래식을 통해 IoT 장치에 연결하려면 SPP (직렬 포트 프로토콜)가 필요합니다. IoT 장치에는 화면과 키보드가 없으며 연결 전화가 비밀 PIN을 알고있는 한 자동으로 연결을 수락해야합니다 (예 : 매번 IoT 장치로 ssh를 보내 강제로 연결을 설정하는 것을 원하지 않음) 새로운 휴대 전화가 연결을 시도 함). Linux에서 블루투스 자동 페어링 설정
이
는 내가 만약 IoT 디바이스에 지금까지 실행 한 명령입니다 : 불행하게도# Make the device discoverable:
hciconfig hci0 piscan
# Register SPP:
sdptool add --channel=22 SP
# Start rfcomm:
rfcomm -r watch /dev/rfcomm0 22
을, 나는 PIN을 설정할 수있는 방법을 찾을 수 없습니다, 나는 연결하려고 할 때 페어링이 실패 휴대 전화와. 또한이 장치는 짧은 간격 동안 만 검색 할 수 있습니다.
은 어떻게 만약 IoT 디바이스의 블루투스 스택 주어진 PIN을 알고있는 모든 전화에 자동 쌍 (최근 Bluez를 실행)를 구성해야합니까, 어떻게 내가 발견 기간이 영원한해야합니까?
당신은 "bluetoothctl"유틸리티를 사용할 수있다 bluez 라이브러리에있는 선박 . 인증을 위해 에이전트를 활성화해야합니다. 시스템에 헤드가 없으므로 "NoInputNoOutput"을 사용할 수 있습니다. 이렇게하면 인증을위한 패스 키의 상호 작용 (bluetoothctl agen NoInputNoOutput)을 피할 수 있습니다. 모든 연결을 허용 할 경우에, –
"org.bluez.Agent1"구현 "RequestAuthorization"최소한의 방법으로 자신의 에이전트를 등록 할 DBUS 인터페이스 "org.bluez.AgentManager1"를 사용하지만 bluetoothctl를 시작하고 설정하면 " 에이전트 NoInputNoOutput "을 입력하면 연결을 수락할지 묻습니다. 배치 모드로 설정하면 다른 행동을한다고 나에게 말하고 있습니까? AgentManager1의 자체 구현을 만들 때, 이는 휠을 재조직하는 것처럼 보입니다. 블루즈가 에이전트 매니저와 함께 배송하지 않았습니까? –
예, 여전히 확인을 묻습니다 (예/아니오). 그러나 Agent1 인터페이스를 사용하여 간단한 에이전트를 작성하여 "예"로 대답 할 수 있습니다. 예, BlueZ는 "DisplayOnly", "DisplayYesNo", "KeyboardOnly", "NoInputNoOutput"와 "KeyboardDisplay"이러한 기능을 에이전트 관리자를 제공합니다. 당신이 어떤 개입없이 받아들이는 특별한 경우를해야합니다, 당신은 "예"를 보내 자신의 Agent1 그것을 달성 할 수 –