Tangara!

The Tangara is a MP3 player designed and manufactured by Cool tech Zone. Whilst I could just buy one, it's open source and hackable! So I've built one to match my custom Porta Pro's (Farsoo clear headband, KSC75 drivers, Yaxi pads, <3).

Hero photo

This is my build thread for a custom Tangara.

I added a footprint for a SCD41 CO2 sensor to the mainboard. I'm not going to publish this PCB as I later redesigned this to be much more flexible.

custom mainboard

I ordered the PCB's, case, and buttons from JLCPCB. The boards are fantastic, as normal. The case is very pretty in 8001 SLA, but has some visible layer lines (which is odd for SLA), and is 1.5mm shallow in one corner (also odd).

Hot air is essential for assembly. Normal advice applies – use plenty of paste. Start with large components. Use a microscope to check for shorts under leadless packages. Take your time and enjoy the process!

I found even with a high end soldering station rework also required hot air, as the 2 solid internal ground planes could sink heat incredibly fast.

A totally custom Tangara needs to be flashed with the first stage samd bootloader. On a Mac, using Whitequark's Glasgow digital multitool, I could achieve this with the following set of tools:

# Obtain the Glasgow host agent
brew install libusb pipx
pipx ensurepath
git clone https://github.com/GlasgowEmbedded/glasgow
pipx install -e 'glasgow/software[builtin-toolchain]'
glasgow run probe-rs --voltage 3.3 --swdio A0 --swclk A1 --srst A2

# Glasgow is a unique SWD adaptor - requires WQ's fork of probe-rs
git clone https://github.com/whitequark/probe-rs.git
rustup toolchain install 1.87.0-aarch64-apple-darwin
 cd probe-rs && cargo build

# obtain the boot loader with tangara board defn files
brew install armmbed/formulae/arm-none-eabi-gcc
git clone https://git.sr.ht/\~jacqueline/tangara-samd-bootloader
cd tangara-samd-bootloader
make BOARD=tangara

# write to the samd, using a slow clock to compensate for improper cabling
target/debug/probe-rs download --probe 20b7:9db1:C1-20200924T011648Z:1:0 --protocol swd --speed 100 tangara-samd-bootloader/build/tangara/bootloader-tangara-bc1632d.elf
target/debug/probe-rs verify --probe 20b7:9db1:C1-20200924T011648Z:1:0 --protocol swd --speed 100 tangara-samd-bootloader/build/tangara/bootloader-tangara-bc1632d.elf

From here the Tangara will appear as a usb drive for U2 format samd firmware loading. Once this is in place, the samd exposes the ESP32 to the host in the same way as normal for a ESP32.

The touch wheel does not work well if the case is not assembled. This makes debugging somewhat difficult.

Rather than use the SCD41 on the mainboard, I've redesigned the back case and added a second I2C port with a flexPCB shim. This will host a GPS, IR camera, and CO2 sensor and take up some space not used by my choice of battery.

Sensor backpack render