2014-12-02 5 views
2

Intel Edison에서 내 Bluetooth 설정을 초기화하는 스크립트가 있습니다. Yocto Poky Linux를 실행하는이 헤드리스 머신에 페어링 및 연결을 허용합니다. 시작 스크립트를 /etc/init.d에 넣고 update-rc.d myscript.sh defaults를 실행하는 것이 좋습니다. 스크립트가 실행되었지만 블루투스가 아직 시작되지 않았기 때문에 블루투스 장치를 찾을 수 없다는 부팅 오류가 발생했습니다. 내가 몇 가지 reasearch 했어 내 링크를 제거한 후 내가 마지막으로 스크립트를 실행하도록 주장했다 update-rc.d myscript.sh 기본값 99 않았다 그러나 그것은 어떤 differrence 만들 - 여전히 부팅 시퀀스에서 같은 장소에서 실행 . 나는 링크가 S99를 가졌음을 확인 했으므로 제대로 설정된 것처럼 보였다. 비슷한 질문을 한 다른 글이 있는데, 우분투 시스템인데 내 시스템은 Poky Linux입니다. 이 솔루션은 내 시스템에없는 디렉토리에 시작 스크립트를 넣을 것을 제안했습니다. rc.local에 넣으려는 다른 제안이있었습니다. 동일한 결과를 얻었고 Bluetooth가 초기화되기 전에 실행되었습니다.Yocto Poky Linux를 사용하여 시작 스크립트에서 Bluetooth를 초기화하는 방법

내 스크립트는 다음과 같습니다. 내 프로그램은 nmea_thread라고하며 마지막으로 실행됩니다. 다른 모든 것은 블루투스를 초기화하고 있습니다.

#!/bin/sh 
/usr/sbin/rfkill unblock bluetooth 
/usr/bin/hciconfig hci0 up 
/usr/bin/hciconfig hci0 piscan 
/usr/bin/hciconfig hic0 sspmode 0 
/home/root/simpleAgent/simple-agent & 
/home/root/nmea_thread 

답변

1

종종 블루투스는 비동기 적으로 초기화된다, 그래서 당신은 hci0이 추가 된 후에 스크립트가 실행됩니다 확신 할 수 없습니다. 좋은 해결책은 백그라운드에서 BT 초기화를 기다리는 것입니다 :

#!/bin/bash 

if [ "$1" != "background" ]; then 
    $0 background & 
else 
    #Wait until BT is initialized 
    for ((i = 0; i <= 100; i++)) do 
     hciconfig hci0 && break 
     usleep 100000 
    done 
    /usr/sbin/rfkill unblock bluetooth 
    /usr/bin/hciconfig hci0 up 
    /usr/bin/hciconfig hci0 piscan 
    /usr/bin/hciconfig hic0 sspmode 0 
    /home/root/simpleAgent/simple-agent & 
    /home/root/nmea_thread 
fi 
+0

bcm43xx –

0

hciattach가 올바른 방법입니다. 구문

hciattach는/dev/ttyAMA0 나는 위의 코드를 추가 할 필요가있는 파일 3000000