2016-10-05 4 views
1

저는 USB/Bluetooth 동글 (blueZ) 5.4를 사용하여 Raspberry Pi 3에서 Rasbian Jessie Lite를 실행하고 있습니다.블루투스 프로파일을 프로그래밍 방식으로 활성화/비활성화합니다.

/etc/bluetooth/main.conf에는 클래스 = 0x0c0408이 있습니다. 블루투스 장치를 사용하고 들어오는 페어링 요청을 수락하는 Qt5 응용 프로그램이 있습니다.

내 스마트 폰에서 활성화 된 모든 Bluetooth 프로필 (A2DP 및 HFP)에 연결할 수 있습니다.

이제 사용자가 어떤 프로필을 활성화해야하는지 선택하도록하고 싶습니다. 따라서 나는 on-the-fly A2DP 및 HFP를 활성화/비활성화하는 방법을 찾고 있습니다. C++, bash 또는 python 스크립트에서는 괜찮습니다.

블루투스 서비스를 다시 시작할 수 없기 때문에 클래스 값을 변경할 수 없습니다. GATT 서버를 계속 실행해야합니다.

어떤 생각?

+0

마크, 문제의 해결 방법을 찾으셨습니까? – wojciii

+0

아닙니다. 상업용 BT 스택을 사용하여 끝났고 어쨌든 연결 전에 사용 가능한 서비스를 선택해야합니다 (또는 사용자가 수동으로 연결을 끊도록하십시오). – Mark

답변

2

Bluez에서 프로필/서비스를 활성화 및 비활성화하려면 sdptool 명령을 사용하십시오. 당신이 어떤 프로필/서비스를 사용하려면 다음을 사용할 수

sdptool add A2SRC

을 같은 방식으로 모든 서비스를 비활성화/당신이 사용할 수있는 프로필 :

더 많은 정보를 찾을 수

sdptool del A2SRC 
사용하여 도움을 sdptool의

sdptool - SDP tool v5.37 
Usage: 
    sdptool [options] <command> [command parameters] 
Options: 
    -h  Display help 
    -i  Specify source interface 
Commands: 
    search  Search for a service 
    browse  Browse all available services 
    records  Request all records 
    add   Add local service 
    del   Delete local service 
    get   Get local service 
    setattr  Set/Add attribute to a SDP record 
    setseq  Set/Add attribute sequence to a SDP record 

Services: 
    DID SP DUN LAN FAX OPUSH FTP PRINT HS HSAG HF HFAG SAP PBAP MAP 
    NAP GN PANU HCRP HID KEYB WIIMOTE CIP CTP A2SRC A2SNK AVRCT AVRTG 
    UDIUE UDITE SEMCHLA SR1 SYNCML SYNCMLSERV ACTIVESYNC HOTSYNC 
    PALMOS NOKID PCSUITE NFTP NSYNCML NGAGE APPLE IAP ISYNC GATT 

이제 프로필/서비스를 사용하거나 사용하지 않도록 설정할 수 있습니다.

두 번째 질문으로 이동하면 스마트 폰 사용자가 원격으로 프로필을 사용 설정하거나 사용 중지하도록 설정하는 방법입니다. 이것은 Bluetooth의 직렬 포트 프로필 (SPP)을 통해 얻을 수 있습니다. 간단히 요약하자면, SPP는 블루투스를 통한 직렬 포트 에뮬레이션입니다. RFcomm 프로토콜을 기반으로하며 A2DP 및 HFP와 함께 사용할 수 있습니다.

그래서 스마트 폰에서 RSP로 SPP 연결을 만든 다음 프로필을 사용 설정하거나 사용 중지하는 명령을 보내는 것이 좋습니다. Bluez에서 사용 가능한 rfcomm 명령을 사용하여 명령 줄에서 SPP를 사용할 수 있습니다. 명령을 사용하는 방법에 대한 자세한 정보는 여기에서 찾을 수 있습니다 :

https://unix.stackexchange.com/questions/92255/how-do-i-connect-and-send-data-to-a-bluetooth-serial-port-on-linux

은 더 이상 설명이에 필요하면 알려주세요.

+0

답해 주셔서 감사합니다. sdptool 명령을 사용해 보겠습니다. 원격 명령에 대해서는 이미 GATT 서버를 사용하고 있습니다. 그래서 계속 실행해야합니다! – Mark

+0

원격 명령 문제를 해결할 수 있는지 확인하는 것이 좋습니다. 귀하의 프로젝트와 함께 최선을 .. – aksonlyaks

+0

나는이 대답이 잘못되었다고 생각합니다. sdptool의 맨 페이지를 읽으면 "del record_handle .. 참고 : 로컬 어댑터 구성이 업데이트되지 않으며이 명령은 SDP 테스트에만 사용되어야합니다"(Ubuntu 16.04). 나는 서비스를 제거해도 연결 장치가 "sdptool del"을 사용하여 방금 제거한 프로파일에 행복하게 연결되는 hcidump의 출력을 볼 때 아무런 효과가 없다는 것을 알았습니다. – wojciii

관련 문제