Friday 13 May 2016

Blutella, a Bluetooth speaker receiver

Quite some time ago, I was asked for a way to use the AV amplifier (which has a fair bunch of speakers connected to it) in our living-room that didn't require turning on the TV to choose a source.

I decided to try and solve this problem myself, as an exercise rather than a cost saving measure (there are good-quality Bluetooth receivers available for between 15 and 20€).

Introducing Blutella

I found this pot of Nutella in my travels (in Europe, smaller quantities are usually in a jar that looks like a mustard glass, with straight sides) and thought it would be a perfect receptacle for a CHIP, to allow streaming via Bluetooth to the amp. I wanted to make a nice how-to for you, dear reader, but best laid plans...

First, the materials:
  • a CHIP
  • jar of Nutella, and "Burnt umber" acrylic paint
  • micro-USB to USB-A and jack 3.5mm to RCA cables
  • Some white Sugru, for a nice finish around the cables
  • bit of foam, a Stanley knife, a CD marker

That's around 10€ in parts (cables always seem to be expensive), not including our salvaged Nutella jar, and the CHIP itself (9$ + shipping).

You'll start by painting the whole of the jar, on the inside, with the acrylic paint. Allow a couple of days to dry, it'll be quite thick.

So, the plan that went awry. Turns out that the CHIP, with the cables plugged in, doesn't fit inside this 140g jar of Nutella. I also didn't make the holes exactly in the right place. The CHIP is tiny, but not small enough to rotate inside the jar without hitting the side, and the groove to screw the cap also have only one position.

Anyway, I pierced two holes in the lid for the audio jack and the USB charging cable, stuffed the CHIP inside, and forced the lid on so it clipped on the jar's groove.

I had nice photos with foam I cut to hold the CHIP in place, but the finish isn't quite up to my standards. I guess that means I can attempt this again with a bigger jar ;)

The software

After flashing the CHIP with Debian, I logged in, and launched a script which I put together to avoid either long how-tos, or errors when I tried to reproduce the setup after a firmware update and reset.

The script for setting things up is in the CHIP-bluetooth-speaker repository. There are a few bugs due to drivers, and lack of integration, but this blog is the wrong place to track them, so check out the issues list.

Apart from those driver problems, I found the integration between PulseAudio and BlueZ pretty impressive, though I wish there was a way for the speaker to reconnect to the phone I streamed from when turned on again, as Bluetooth speakers and headsets do, removing one step from playing back audio.


Adrien Plazas said...

If you need help to prepare your cases, you know where to find me. =D

bestouff said...

Getting the Nutella container to be empty is the easy part. Getting a CHIP delivered to your door however is another story. Mine has been ordered ages ago and still shows no sign of life.

Jeff Fortin said...

Great hack!

Have you tested system suspend & resume with that bluetooth speaker? Or does it not behave like the typical off-the-shelf speaker?

I remember there was a bug introduced with Bluez 5 that made this break (at least with a set of Bose bluetooth speakers) until a system reboot after a resume. I never managed to find the persistence to report it (because, hell, Bluez does not even have a bug tracker) and I didn't have the hardware to test it in recent times...

Bastien Nocera said...

@bestouff: it's June delivery if you ordered any accessories with it. The board I used in this is an early development board which I received as I work on the Wi-Fi driver that's used in that machine.

@Jeff: system suspend? The device's power is yanked out when the amp switches off. I should probably add a little battery to make it suspend cleanly instead, but that's not on the cards yet. See the github repo for the list of known bugs.

Jeff Fortin said...

Nah not the suspend of the bluetooth device, but suspend/resume of the computer it's paired to...

Bastien Nocera said...

@Jeff: Never tested from another computer, just from phones.