SmartMic, a SmartMike+ Clone

SmartMic, a SmartMike+ Clone

Last fall a device idea appeared on Kickstarter, the Sabinetek SmartMike+. It promised a Bluetooth lavalier microphone with high quality. As most who have used Bluetooth (especially on Linux) know, the microphone support is kind of terrible, you delve into profiles involving phrases like HSP/HFP, and quickly find that you sound …. like a telephone.

Intrigued, but its kind of expensive @ $160, and, I have the Rode Wireless Go which is pretty fantastic (but not Bluetooth). So I let it go.

After some time I start to see SmartMic (not Mike+) appear online, for about $90. It doesn’t look quite the same (its round instead of rectangular), but the specs are very similar. So, I hit the buy now button.

And, here we are, photo above, pen for scale. Its light. So, I try it out, the box and extensive user guide (reproduced below) are pretty unabashed. Use the SmartMike+ app. So I do. That my friends, is a terrible application. Its only more terrible since they suggest you have no choice but to use it, that somehow this is not a standard Bluetooth device. It suggests somehow that it streams a bit live and stores the rest for retrieval at higher rate.

I will say, the audio quality was very good for a Bluetooth lavalier. If you used this for a conference call you would be very happy. Maybe even a podcast.

So, lets press on, I’m sure they aren’t redoing the Bluetooth stack in Android. So I pair it to the PC. Story checks out, looks like every other Bluetooth headset w/ APT/X, AAC, HSP/HFP profiles. I record some audio in the HSP/HFP profile. Hmm, its ok, not as good as their app. It cuts off at 3500Hz (sharply), so I’m assuming that is the SBC codec.

Let’s look at the profiles:

Service Name: Hands-Free unit
Service RecHandle: 0x10000
Service Class ID List:
  "Handsfree" (0x111e)
  "Generic Audio" (0x1203)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 10
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "Handsfree" (0x111e)
    Version: 0x0106

Service Name: Headset
Service RecHandle: 0x10001
Service Class ID List:
  "Headset" (0x1108)
  "" (0x1131)
  "Generic Audio" (0x1203)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 11
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "Headset" (0x1108)
    Version: 0x0102

Service RecHandle: 0x10002
Service Class ID List:
  "Audio Sink" (0x110b)
Protocol Descriptor List:
  "L2CAP" (0x0100)
    PSM: 25
  "AVDTP" (0x0019)
    uint16: 0x0103
Profile Descriptor List:
  "Advanced Audio" (0x110d)
    Version: 0x0103

Service RecHandle: 0x10003
Service Class ID List:
  "PnP Information" (0x1200)

Service RecHandle: 0x10004
Service Class ID List:
  "AV Remote" (0x110e)
  "AV Remote Controller" (0x110f)
Protocol Descriptor List:
  "L2CAP" (0x0100)
    PSM: 23
  "AVCTP" (0x0017)
    uint16: 0x0104
Profile Descriptor List:
  "AV Remote" (0x110e)
    Version: 0x0105

Service RecHandle: 0x10005
Service Class ID List:
  "AV Remote Target" (0x110c)
Protocol Descriptor List:
  "L2CAP" (0x0100)
    PSM: 23
  "AVCTP" (0x0017)
    uint16: 0x0104
Profile Descriptor List:
  "AV Remote" (0x110e)
    Version: 0x0105

Service Name: M_MIKE_SLV
Service RecHandle: 0x10007
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 14
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
    index: 4
        name: <bluez_card.54_B7_E5_61_0B_B5>
        driver: <module-bluez5-device.c>
        owner module: 27
        properties:
                device.description = "SmartMic"
                device.string = "54:B7:E5:61:0B:B5"
                device.api = "bluez"
                device.class = "sound"
                device.bus = "bluetooth"
                device.form_factor = "headphone"
                bluez.path = "/org/bluez/hci0/dev_54_B7_E5_61_0B_B5"
                bluez.class = "0x240418"
                bluez.alias = "SmartMic"
                device.icon_name = "audio-headphones-bluetooth"
        profiles:
                headset_head_unit: Headset Head Unit (HSP/HFP) (priority 30, available: unknown)
                a2dp_sink_sbc: High Fidelity Playback (A2DP Sink: SBC) (priority 40, available: yes)
                a2dp_sink_aac: High Fidelity Playback (A2DP Sink: AAC) (priority 40, available: no)
                a2dp_sink_aptx: High Fidelity Playback (A2DP Sink: aptX) (priority 40, available: no)
                a2dp_sink_aptx_hd: High Fidelity Playback (A2DP Sink: aptX HD) (priority 40, available: no)
                a2dp_sink_ldac: High Fidelity Playback (A2DP Sink: LDAC) (priority 40, available: no)
                off: Off (priority 0, available: yes)
        active profile: <a2dp_sink_sbc>

Interestingly I cannot run avinfo:

./avinfo 54:B7:E5:61:0B:B5
Connecting ... 
Connect failed. Connection refused(111)

So, I’m not sure what is next. Their app is terrible. The audio and video are wholely unsynced. It has some spinning pink cloud to play back the audio later. No auto sync to Google Drive. Its, ugh.

What I was hoping was a high fidelity Bluetooth microphone, and use w/ Audacity. What I got, well, more hacking will be needed!

Leave a Reply

Your email address will not be published. Required fields are marked *

*