I don't have access to a Bluetooth headset, nevertheless let me see if I can find something that might help you. I'll try to get back to you as soon as possible.
Could you provide us any other information that you consider important, like the image you are currently using and your headset’s model?
Wow thanks for the quick response, @Intel_Peter!
I've flashed it with the a Yocto linux image. Here's what I see when I run cat /etc/issue: Poky (Yocto Project Reference Distro) 1.7.2 \n \l
I'm using a Plantronics Voyager Legend bluetooth headset. I didn't need to install gstreamer from AlexT's repo, only the gstreamer-dev package.
This information will be of much help, I'm still working on this, I'll try to get back to you as soon as I can.
I followed section 4.4 of the Edison Audio Setup Guide using a Plantronics BT300. Since the Bluetooth headset has a USB adapter, I treated it as a "USB headset".
If using the Arduino Kit, activate the USB host mode by moving the SW1 to right position.
Note: external power source is needed in this mode for both Edison Kit for Arduino and Breakout board.
1. Plug the USB headset for the Bluetooth adapter.
2. Check if the device is correctly mounted:
root@MyEdison_Lab:~# cat /proc/asound/pcm 00-00: Loopback PCM : Loopback PCM : playback 8 : capture 8 00-01: Loopback PCM : Loopback PCM : playback 8 : capture 8 01-00: 14 : : playback 1 : capture 1 01-01: ((null)) : : playback 1 : capture 1 01-02: ((null)) : : playback 1 : capture 1 02-00: USB Audio : USB Audio : playback 1 : capture 1 <--- Should look like this
3. From this USB device, you can see the number of streams handled by the device:
root@MyEdison_Lab:~# pactl list | grep Name | grep usb Name: alsa_output.usb-Plantronics_Plantronics_BT300_85c1bafebff57e4e80e864d6f4c9aa8a-00-BT300.analog-mono <--- We want this Name: alsa_output.usb-Plantronics_Plantronics_BT300_85c1bafebff57e4e80e864d6f4c9aa8a-00-BT300.analog-mono.monitor Name: alsa_input.usb-Plantronics_Plantronics_BT300_85c1bafebff57e4e80e864d6f4c9aa8a-00-BT300.analog-mono Name: alsa_card.usb-Plantronics_Plantronics_BT300_85c1bafebff57e4e80e864d6f4c9aa8a-00-BT300
4. Set the default audio output device using pactl command:
pactl set-default-sink alsa_output.usb-Plantronics_Plantronics_BT300_85c1bafebff57e4e80e864d6f4c9aa8a-00-BT300.analog-mono
5. Use the arecord -l command to list the audio devices and find the USB headset adapter, display should look something like this:
root@MyEdison_Lab:~# arecord -l **** List of CAPTURE Hardware Devices **** card 0: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM] Subdevices: 8/8 Subdevice #0: subdevice # card 0: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM] Subdevices: 8/8 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #7: subdevice #7 card 1: dummyaudio [dummy-audio], device 0: 14  Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: dummyaudio [dummy-audio], device 1: ((null))  Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: dummyaudio [dummy-audio], device 2: ((null))  Subdevices: 1/1 Subdevice #0: subdevice #0 card 2: BT300 [Plantronics BT300], device 0: USB Audio [USB Audio] <-- This is our USB adapter device Subdevices: 1/1 Subdevice #0: subdevice #0
7. From the displayed output take note of the card# and the device# (in this example is 2 and 0) as we will need it for the following step.
8. Device is ready to record/play audio. Use the arecord command to record and store in a file locally on Edison's home directory.
Note: to stop recording use Ctrl + C.
root@MyEdison_Lab:~# arecord -D hw:2,0 -f S16_LE -r16000 audio_record.wav
You can use "arecord -h" to get more information.
9. Use aplay command to play the file generated on your headset:
root@MyEdison_Lab:~# aplay -D hw:2,0 -f S16_LE -r16000 audio_record.wav
You can use "aplay -h" to get more information.
I hope this helps, let us know.
Honestly appreciate you taking the effort. I don't have any trouble using alsa for playing and recording audio with my USB headset. For my project, I specifically need to be able to interface with a bluetooth headset (err, via bluetooth) and use Gstreamer which is where I'm struggling with setting the headset as a source.
Btw, I'm wondering... what happens when you do the following?
- rfkill unblock bluetooth
- bluetoothctl (and cnnect to your headset)
- pactl list | grep bluez
Do you see your device as a sink, source or both? I'm wondering if there's something inherently wrong with trying to set a bluetooth headset as a source.
I see, let me do some more tests and I'll get back to you.
My output to pactl list | grep bluez is the following:
Name: module-bluez5-discover Name: module-bluez5-device Argument: path=/org/bluez/hci0/dev_0C_E0_E4_12_3F_CD Name: bluez_sink.0C_E0_E4_12_3F_CD Driver: module-bluez5-device.c Monitor Source: bluez_sink.0C_E0_E4_12_3F_CD.monitor device.api = "bluez" bluez.path = "/org/bluez/hci0/dev_0C_E0_E4_12_3F_CD" bluez.class = "0x240404" bluez.alias = "PLT_Legend" Name: bluez_sink.0C_E0_E4_12_3F_CD.monitor Driver: module-bluez5-device.c Monitor of Sink: bluez_sink.0C_E0_E4_12_3F_CD device.api = "bluez" bluez.path = "/org/bluez/hci0/dev_0C_E0_E4_12_3F_CD" bluez.class = "0x240404" bluez.alias = "PLT_Legend" Name: bluez_card.0C_E0_E4_12_3F_CD Driver: module-bluez5-device.c device.api = "bluez" bluez.path = "/org/bluez/hci0/dev_0C_E0_E4_12_3F_CD" bluez.class = "0x240404" bluez.alias = "PLT_Legend"
As you can see mine is also only recognized as sink. I'm not sure if (as you mentioned) it is because we are trying to use a headset.