저는 라즈베리 파이 3(raspbian jessie)를 가지고 있으며 파이에서 페어링을 스캔하고 시작하면 현재 휴대폰과 페어링할 수 있습니다 bluetoothctl
. 두 가지 주요 질문이 있습니다.
- 해당 장치가 휴대폰의 Bluetooth 장치 목록에 나타나지 않습니다.
- 현재 페어링하려면 Pi와의 인간 상호 작용이 필요합니다.
hcitool
첫 번째 질문은 제가 광고하는 내용과 관련이 있을 수 있습니다. 저는 과거에 패킷을 설정하고 iOS Bluetooth 사양으로 작업해 왔습니다.
두 번째는 제가 주장하는 것입니다. 이상적으로는 휴대폰에 고정 PIN을 입력하고 연결하는 것이 좋습니다. 그런데 이 방법은 시대에 뒤떨어져 bluetooth-agent MY_PIN
작동하지 않는다는 말을 들었습니다. (명령어를 찾을 수 없습니다.) 페어링 인증을 끄고 싶지 않습니다. 이렇게 하면 내 주변의 모든 사람들이 연결할 수 있기 때문입니다.
사용할 수 있는 더 나은 접근 방식이 있나요? 그렇지 않은 경우 PIN 인증을 작동시키는 방법에 대한 지침을 찾고 있습니다.
답변1
나는 한동안 (5 개월) 같은 문제를 겪고 있었고 우연히 발견했습니다.이 페이지어제
처음 몇 가지 설명에서는 Pi에서 Bluetooth PIN을 구현하는 방법을 보여줍니다. 설치 후 그것은 나를 위해 일했습니다이것(PIN을 구현하기 위해 일부 파일을 변경하기 전에 이것을 설치했습니다.
기본적으로 절차는 다음과 같습니다.
존재하다/etc/apt/sources.list, "deb-src"로 시작하는 줄의 주석 처리를 제거한 후 a sudo apt-get update
및 a를 실행합니다.cd /usr/src; sudo apt-get source bluez
파일에서 /usr/src/bluez-5.23/test/simple-agent
이 섹션을 변경하십시오 . return ask("Enter PIN Code: ")
다음을 입력하십시오. return "1234"
여기서 1234는 사용하려는 핀 코드입니다.
그 후 다음 스크립트를 생성합니다./usr/빈, btscript.sh라고 부르겠습니다.
#!/bin/sh
result=`ps aux | grep -i "simple-agent" | grep -v "grep" | wc -l`
if [ $result -ge 0 ]; then
sudo hciconfig hci0 piscan
sudo hciconfig hci0 sspmode 0
sudo /usr/bin/python /usr/src/bluez-5.23/test/simple-agent &
else
echo "BT Agent already started"
fi
파일 앞에 다음 행을 추가하여 sudo chmod +x
스크립트를 실행 가능하게 만듭니다 .exit 0
/etc/rc.local
/usr/bin/btscript.sh
그런 다음 컴퓨터를 다시 시작하세요.sudo reboot
PIN을 사용하여 Pi에 연결할 수 있어야 합니다.
그래도 앞서 언급했듯이여기, iOS 기기를 사용하여 Pi를 볼 수 있지만 한 번만 볼 수 있으므로 기기에서 Pi를 잊어버리지 않도록 하세요. 그렇지 않으면 더 이상 Pi에 연결할 수 없게 됩니다.
이 문제를 해결하려면 다음과 같은 스크립트를 작성하십시오.bt_iphone.sh를 입력하고 다음 코드를 입력하세요.
#!/bin/sh
sudo hciconfig hci0 sspmode 1 # Activate SSP which is the current standard
# for bluetooth pairing, this will make the RPi discoverable again but
# with a passkey instead of a PIN code
echo -e 'power off\n quit ' | bluetoothctl # Make the RPi undiscoverable
sleep 5
echo -e 'power on\n quit ' | bluetoothctl # Make the RPi discoverable again
sleep 1
sudo hciconfig hci0 sspmode 0 # Deactivate SSP and activate PIN code authentication
exit 0
실행 가능하게 만들고 sudo chmod +x bt_iphone.sh
crontab을 사용하여 매분마다 이 스크립트를 실행합니다. crontab -e
파일 끝에서 다음을 수행합니다.
* * * * * sudo bash /path/to/bt_iphone.sh
우아하지는 않지만 작동하는 것 같습니다. 누구든지 마지막 문제에 대한 더 나은 해결책을 가지고 있다면 제안을 받을 수 있습니다.
문제가 여전히 존재하며(iDevices에만 해당), PIN 코드에 대한 시간 초과가 발생하고, PIN 코드 화면이 나타난 후 3초 이내에 PIN 코드를 입력하고 확인하지 않으면 연결할 수 없습니다. 아직 해결책을 찾지 못했습니다.