В ходе реализации проектов на плате Intel Edison иногда возникает необходимость воспроизвести звук. В последних версиях образа Yocto добавлена поддержка Alsa, и можно воспользоваться USB аудиокартой. Но большую мобильность даст использование встроенного Bluetooth модуля. Например, устройство на базе Intel Edison, которое получает аудиофайлы по сети, может находиться стационарно в одном месте в комнате. Слушать же музыку можно в любой точке помещения, используя обычные беспроводные наушники. Итак, начнём.

image

Вам понадобятся


  • Звуковое Bluetooth устройство, например, наушники или колонки.
  • Подключенная к WiFi сети плата Intel Edison. (Смотрите Step 3: Get your Board Online).
  • Компьютер с музыкальными wav файлами, расположенный в нашей сетке.
  • Установленное терминальное соединение с платой через последовательный порт (Смотрите Set Up WiFi – Intel Edison) или SSH.

Настройка


Включите ваше Bluetooth устройство и сделайте его видимым. Введите следующие команды в терминале:

rfkill unblock bluetooth
bluetoothctl

Просканируйте доступные Bluetooth устройства:

scan on

Найдите ваше устройство и присоединитесь к нему (подставив его MAC адрес):

pair 00:25:DB:05:72:F2

Установите соединение, если необходимо:

connect 00:25:DB:05:72:F2

Закройте программу bluetoothctl:

quit

Проверьте, что ваше A2DP устройство (в нашем случае наушники LG) распознались в pulseaudio как sink-устройство и его имя начинается с bluez_sink

pactl list sinks



Сконфигурируйте дефолтный sink для использования в pulseaudio следующими командами, подставив параметры вашего устройства:

pactl set-default-sink bluez_sink.00_25_DB_05_72_F2

Скопируйте аудио файл в формате wav на плату Intel Edison, используя scp (Linux) или pscp.exe (Windows) и проиграйте его через mplayer:

mplayer Intel_bong.wav2

Используйте wav файлы, так как могут быть некоторые сложности при проигрывании mp3 файлов.

Устранение проблем


Если вы получили:

Failed to pair: org.bluez.Error.AlreadyExists

Проверьте, какое устройство у вас подключено:

paired-devices

Удалите устройство, к которому вы подключены (подставьте MAC-адрес вашего устройства):

remove 78:24:AF:13:58:B9

Другие полезные команды bluetoothctl можно получить так:

help

Дополнительная информация



От переводчика


При проверке этой статьи у меня возникли некоторые проблемы. Устройство не получалось подсоединить командой connect, не было команды pactl. Плата Edison была прямо из коробки, поэтому всё это решилось перепрошивкой новой версией образа Yocto.

Чтобы перепрошить плату, можно воспользоваться следующей рекомендацией. Я сделал немного по-другому в Windows.

В папке с распакованным архивом Yocto на Windows компьютере запускаем flashall.bat. Возможно, еще понадобится программа dfu-util.exe, которую надо поместить в эту же распакованную папку. Сама программа доступна по ссылке.

Обсуждение dfu-util под Windows и перепрошивку Edison можно найти тут и тут.

Читайте также:

» Практикум «Intel IoT». Edison — могучая «кроха»

Комментарии (5)


  1. Nikobraz
    19.05.2015 12:24
    +3

    Зачем мне аналог Bluetooth-брелка за 50$?
    Другое дело он бы S/PDIF по Bluetooth отдавал.


    1. lorc
      19.05.2015 15:14
      +3

      А принимать его кто там будет? Нет у bluetooth профилей способных передавать losless звук.


  1. avstepanov
    19.05.2015 21:44
    +1

    Есть же aptX (разницу отлично слышно не сильно вооруженным ухом). Только вот вопрос, умеет ли это edison? Надо попробовать.


    1. avstepanov
      19.05.2015 22:00

      Попробовал описаный пример — все заработало сразу.
      Проще всего звуковой файл «затянуть» непосредственно из сети, к примеру, так:

      wget http://westportconsulting.com/sounds/bell.wav
      

      Но вот качество воспроизводимого звука — ну очень низкое.


      1. avstepanov
        19.05.2015 22:34

        Кстати, «глянул» на то, как «выглядит» bluetooth edison:

        pi@RPi2 ~ $ sudo hcitool info 98:4F:EE:02:D4:E1
        Requesting information ...
        	BD Address:  98:4F:EE:02:D4:E1
        	Device Name: edison
        	LMP Version: 4.0 (0x6) LMP Subversion: 0x410e
        	Manufacturer: Broadcom Corporation (15)
        	Features page 0: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
        		<3-slot packets> <5-slot packets> <encryption> <slot offset> 
        		<timing accuracy> <role switch> <sniff mode> <RSSI> 
        		<channel quality> <SCO link> <HV2 packets> <HV3 packets> 
        		<u-law log> <A-law log> <CVSD> <paging scheme> <power control> 
        		<transparent SCO> <broadcast encrypt> <EDR ACL 2 Mbps> 
        		<EDR ACL 3 Mbps> <enhanced iscan> <interlaced iscan> 
        		<interlaced pscan> <inquiry with RSSI> <extended SCO> 
        		<EV4 packets> <EV5 packets> <AFH cap. slave> 
        		<AFH class. slave> <LE support> <3-slot EDR ACL> 
        		<5-slot EDR ACL> <sniff subrating> <pause encryption> 
        		<AFH cap. master> <AFH class. master> <EDR eSCO 2 Mbps> 
        		<EDR eSCO 3 Mbps> <3-slot EDR eSCO> <extended inquiry> 
        		<LE and BR/EDR> <simple pairing> <encapsulated PDU> 
        		<err. data report> <non-flush flag> <LSTO> <inquiry TX power> 
        		<EPC> <extended features> 
        	Features page 1: 0x07 0x00 0x00 0x00 0x00 0x00 0x00 0x00
        	Features page 2: 0x20 0x08 0x00 0x00 0x00 0x00 0x00 0x00
        


        А вот так - другие устройства
        Nokia Lumia 1520:
        pi@RPi2 ~ $ sudo hcitool info C0:64:C6:4E:4B:1E
        Requesting information ...
        	BD Address:  C0:64:C6:4E:4B:1E
        	Device Name: Lumia 1520
        	LMP Version: 4.0 (0x6) LMP Subversion: 0x7d3
        	Manufacturer: Qualcomm (29)
        	Features page 0: 0xff 0xfe 0x8f 0xfe 0xd8 0x3f 0x5b 0x87
        		<3-slot packets> <5-slot packets> <encryption> <slot offset> 
        		<timing accuracy> <role switch> <hold mode> <sniff mode> 
        		<RSSI> <channel quality> <SCO link> <HV2 packets> 
        		<HV3 packets> <u-law log> <A-law log> <CVSD> <paging scheme> 
        		<power control> <transparent SCO> <broadcast encrypt> 
        		<EDR ACL 2 Mbps> <EDR ACL 3 Mbps> <enhanced iscan> 
        		<interlaced iscan> <interlaced pscan> <inquiry with RSSI> 
        		<extended SCO> <AFH cap. slave> <AFH class. slave> 
        		<LE support> <3-slot EDR ACL> <5-slot EDR ACL> 
        		<sniff subrating> <pause encryption> <AFH cap. master> 
        		<AFH class. master> <EDR eSCO 2 Mbps> <extended inquiry> 
        		<LE and BR/EDR> <simple pairing> <encapsulated PDU> 
        		<non-flush flag> <LSTO> <inquiry TX power> <EPC> 
        		<extended features> 
        	Features page 1: 0x07 0x00 0x00 0x00 0x00 0x00 0x00 0x00
        


        Китайская блютус-колонка:
        pi@RPi2 ~ $ sudo hcitool info 30:22:00:00:2D:BB
        Requesting information ...
        	BD Address:  30:22:00:00:2D:BB
        	Device Name: X3
        	LMP Version: 3.0 (0x5) LMP Subversion: 0x1f4
        	Manufacturer: CONWISE Technology Corporation Ltd (66)
        	Features page 0: 0xbf 0x3a 0x85 0xfa 0x88 0x1d 0x59 0x87
        		<3-slot packets> <5-slot packets> <encryption> <slot offset> 
        		<timing accuracy> <role switch> <sniff mode> <RSSI> <SCO link> 
        		<HV2 packets> <HV3 packets> <CVSD> <power control> 
        		<broadcast encrypt> <EDR ACL 2 Mbps> <enhanced iscan> 
        		<interlaced iscan> <interlaced pscan> <inquiry with RSSI> 
        		<extended SCO> <AFH cap. slave> <3-slot EDR ACL> 
        		<5-slot EDR ACL> <pause encryption> <AFH cap. master> 
        		<AFH class. master> <extended inquiry> <simple pairing> 
        		<encapsulated PDU> <non-flush flag> <LSTO> <inquiry TX power> 
        		<EPC> <extended features> 
        	Features page 1: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
        


        Блютус-модуль на базе CSR8645 (поддерживает aptx):
        pi@RPi2 ~ $ sudo hcitool info C0:7A:A5:00:9B:4A
        Requesting information ...
        	BD Address:  C0:7A:A5:00:9B:4A
        	Device Name: CSR8645
        	LMP Version: 4.0 (0x6) LMP Subversion: 0x21c8
        	Manufacturer: Cambridge Silicon Radio (10)
        	Features page 0: 0xff 0xff 0x8f 0xfe 0x9b 0xff 0x59 0x87
        		<3-slot packets> <5-slot packets> <encryption> <slot offset> 
        		<timing accuracy> <role switch> <hold mode> <sniff mode> 
        		<park state> <RSSI> <channel quality> <SCO link> <HV2 packets> 
        		<HV3 packets> <u-law log> <A-law log> <CVSD> <paging scheme> 
        		<power control> <transparent SCO> <broadcast encrypt> 
        		<EDR ACL 2 Mbps> <EDR ACL 3 Mbps> <enhanced iscan> 
        		<interlaced iscan> <interlaced pscan> <inquiry with RSSI> 
        		<extended SCO> <EV4 packets> <EV5 packets> <AFH cap. slave> 
        		<AFH class. slave> <3-slot EDR ACL> <5-slot EDR ACL> 
        		<sniff subrating> <pause encryption> <AFH cap. master> 
        		<AFH class. master> <EDR eSCO 2 Mbps> <EDR eSCO 3 Mbps> 
        		<3-slot EDR eSCO> <extended inquiry> <simple pairing> 
        		<encapsulated PDU> <non-flush flag> <LSTO> <inquiry TX power> 
        		<EPC> <extended features> 
        	Features page 1: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00