tfabris / BlueGigaEmpeg

Arduino module and daughter board to convert the empeg Car MP3 player to Bluetooth output.
GNU General Public License v3.0
0 stars 0 forks source link

BlueGigaEmpeg

© 2018 by Tony Fabris

https://github.com/tfabris/BlueGigaEmpeg

BlueGigaEmpeg is a project to use a Silicon Labs BlueGiga WT32i Bluetooth chip, combined with an Arduino Mega board, to act as an interface between an empeg Car Mk2/2a MP3 player and a modern Bluetooth-equipped car.

Board Enclosure


Table of Contents


Introduction

Project Information

The empeg Car (small "e") player, also sold as the Rio Car, is an amazing in-dash MP3 player made from 1999-2001 whose features are still, nearly 20 years later, better than any other in-car MP3 solution available. However, the empeg Car didn't have Bluetooth since it wasn't in common use yet at the time.

Modern cars are becoming increasingly difficult to install aftermarket stereos into, due to the car touchscreen dashboards and the high level of integration of the stereo system into the other car systems. For owners of the empeg Car player, it's a problem, because it makes it hard to install our beloved player into our new cars. This project helps to solve this issue by adding digital Bluetooth output to the empeg Car player, allowing it to be connected to a modern car's factory stereo system, and integrate with its controls, in the same way that you would connect a smartphone to your car.

The BlueGigaEmpeg interface works in two ways:

  1. Bluetooth A2DP connection allows high quality digital audio from the empeg Car player to play on the modern car's stereo speakers without needing an Aux Input on the car stereo. This is useful because many cars no longer have an Aux Input available, yet most new cars have Bluetooth.

  2. Bluetooth AVRCP connection allows the empeg Car to receive commands such as "next", "previous", "pause", etc. from the Bluetooth connection, allowing the car stereo's touchscreen and steering wheel controls to be able to change tracks and control playback on the empeg. In addition, the same AVRCP channel allows track title and artist information to be displayed on the car stereo's touchscreen.

Demo video: https://www.youtube.com/watch?v=XS9U_ALc634

Some modification of the empeg Car is required in order for this to work. The Molex connector on the empeg docking sled's wiring harness, which is normally used for an external AM/FM tuner module, must be converted into a digital audio interface for sending audio data to the BlueGigaEmpeg module. Make sure to perform all modifications listed in the Installation section of this document.

Caveats

Acknowledgments

Many thanks to the members of the empegBBS who helped with this so much. The initial chip suggestion was by BBS member Elperepat, and even though I ended up not using the particular chip that he suggested (I had trouble with that chip), it was his suggestion that started me experimenting with Bluetooth. Big thanks to Shonky who had many helpful suggestions and who pointed out the WT32i chip that is the one that finally got used in this particular design. Also particular thanks to Stuart Euans of Eutronix.com who created the empeg Display Extender board, which was critical to me being able to get my empeg mounted cleanly in my new Honda, since it doesn't have dash space for the whole empeg. Big thanks to Peter Betz of Betztechnik, who made a convenient and perfectly-sized breakout board containing the chip I wanted to work with, and who was very helpful and responsive in emails, and even made another manufacturing run with an updated design for me. And massive thanks to Mark Lord who assisted me in countless ways with the design and implementation, taught me a ton of important things, found my bugs, fixed issues with the Arduino compiler, modified his Hijack kernel to support this project, and pointed out all of my EE design flaws. And last but not least, thanks to the entire empeg team who made such a fantastic car MP3 player that we are still doing interesting things with it, nearly 20 years later.

Installation

Installing the BlueGigaEmpeg module requires some modifications to your empeg Car player. Make sure to go through each of the steps linked below.

Prerequisites

Make sure you have all of these things before working with the BlueGigaEmpeg:

Purchase:

Item URL
Empeg Mk2 or Rio Car player http://empegbbs.com/ubbthreads.php/forums/11/1/For_Sale
BlueGigaEmpeg Interface tfabris@gmail.com

Download software (Windows PC or Windows VM required for some of these items):

Item URL
Hijack Kernel for empeg http://empeg-hijack.sourceforge.net
Tony's Empeg Logo Editor http://empegbbs.com/ubbthreads.php/ubb/download/Number/7067/filename/logoedit17.zip
Arduino standalone IDE https://www.arduino.cc/en/Main/Software
Latest BlueGigaEmpeg Arduino firmware Direct download latest project file: https://github.com/tfabris/BlueGigaEmpeg/archive/master.zip
(Alternative) GitHub project for cloning, if you are using the Git tool: https://github.com/tfabris/BlueGigaEmpeg

Important:

The BlueGigaEmpeg module works by connecting to the Molex connector on the empeg Car's docking sled wiring harness. This connector was originally intended for the empeg's external tuner module. The empeg must be modified so that the tuner module connector becomes a digital audio connection instead.

Do not connect the BlueGigaEmpeg to the tuner module connector until after completing the step in this document titled "Modify empeg Car interior for I2S digital audio connection". Also, once the I2S modification has been completed, connect the Molex tuner module connector only to the BlueGigaEmpeg, do not connect it to a tuner module, or to anything else. Damage may occur if these instructions are not followed.

Be sure you are capable of safely making internal modifications to the empeg Car player, and you are able to solder and shrink-tube electronic components. I take no responsibility for damage incurred while you are dismantling and modifying your empeg Car player.

Modify empeg Car interior for I2S digital audio connection

To perform this step, you must be comfortable with disassembling the empeg Car player and removing the disk drive tray in such a way as to not cause damage to the player. In particular, there is risk to the components on the back side of the display board, and to the IDE header connector on the empeg motherboard. Use extreme caution when disassembling the empeg player.

You will be modifying the interior of your empeg Car so that there can be three wires coming out the docking connector which carry digital audio data ("I2S" aka "IIS") and can connect to the BlueGigaEmpeg unit. This is done by hijacking three of the wires originally used for the empeg tuner module on its Molex connector. This tuner module connector will instead plug into the BlueGigaEmpeg electronic assembly, which contains the Bluetooth chip and the Arduino.

The empeg tuner module will no longer work after this modification, and damage may occur if you connect one to your player. If you have a tuner module, now is a good time to disconnect it from the sled and put it away.

Disassembly of empeg Car:

Partially disassemble your empeg player by carefully removing the fascia, lid and drive tray, as described below. You must do the disassembly gently, so as not to damage the empeg. Make sure not to break any of the components sticking off the back of the display board as you do this.

Jumper the I2S pads to the docking connector wires:

Refer to the annotated photograph "I2S Wiring Modification Photo.jpg" to help understand the wiring instructions below.

I2S Wiring Modification Photo.jpg: Wiring Modification

Locate 5 blank I2S pads on the front left side of the empeg motherboard. Pads are outlined in a white silkscreen rectangle with the letters "IIS" next to the outline. White silkscreen rectangle will have one corner of it with a small diagonal "snip" to the corner which will indicate pad number 1 of the set of 5 pads. This diagonal snip will be towards the back of the empeg, and the remaining pads continue towards the front of the empeg. Pads are not individually labeled with numbers, but understand that they are logically numbered 1 2 3 4 5 starting from the back and going towards the front of the empeg. The pinouts of these five pads are:

  1 = IISC  aka  SCK     aka "serial clock"
  2 = IISW  aka  WS      aka "word select"
  3 = GND   aka  Ground  same as chassis ground of empeg
  4 = IISD1 aka  SD      aka "serial data" (1 of 2)
  5 = IISD2 aka  SD      aka "serial data" (2 of 2)

Carefully solder the three supplied jumper wires to pads 1,2, and 4, and you must keep track of which wires are soldered to which pads.

Note: The coloring of the supplied jumper wires is random and arbitrary. They are each colored differently, so that you can tell which ones were soldered to which I2S pads, but their particular colors are not intended to match anything.

When soldering, make sure the jumper wires and the solder joints are flat to the board instead of sticking upwards. The disk drive tray gets close to that location when mounted, so make sure they don't have a chance to contact the tray.

After soldering, cover the solder points with tape or some other insulator to prevent them from shorting out on the drive tray.

Locate the two white connectors on the back part of the empeg motherboard which connect two groups of small colored wires to the docking connector assembly. Locate the rightmost of the two connectors nearest the Ethernet port on the back of the empeg. Unplug this connector, and using a tiny flat tool such as the tip of a jeweler's screwdriver, lift up the small white tabs and gently disengage and pull out the pins. Pull out only the rightmost three pins nearest the Ethernet connector to free up those three wires. These wires are colored, going from left to right, yellow+green, red, and brown. The brown wire is the one on the right end closest to the Ethernet connector, the red wire is the second from the end, and the yellow+green wire is the third from the end.

With the three wires disconnected from the white connector, plug the white connector back into place with the remainder of its wires still connected. You should now have three wires inside the empeg, each with one end still connected to the docking connector assembly, and their other ends loose with small pin connectors on the ends of them.

Carefully solder and shrink-tube your three jumper wires directly to these pin connectors in the exact order described below. Shrink tubing has been supplied with the BlueGigaEmpeg. Don't forget to put the shrink tubing onto the jumper wires before you solder them.

Solder your jumper wires to the empeg interior wires in this order:

After you have done this, your empeg's I2S pads will, when docked, now be carried out the back of the empeg, via the docking sled, into the Molex tuner module connector.

Make sure that your jumper wires are carefully tucked down around the left side of the empeg and out of the way of the disk drive tray assembly as shown in the photo linked above.

Glue down your jumper wires near the I2S pads so that they do not wiggle and rip away the I2S pads. Some empeg Car units will have a chip at that location that you can glue onto, others will have a blank area of the PCB in that location that you can glue onto. Use RTV silicone or cyanoacrylate superglue to glue them down. Use a small amount of glue, and make sure the blob of glue does not "stick up", since the disk drive tray gets very close to that location.

After the glue is fully dry, carefully reassemble the player. Reassemble in the reverse order of disassembly. Make sure to put everything back where you found it, in particular, make sure the IDE cable is folded and routed the same way as it was when you disassembled the player.

When reassembling, be careful not to overtighten the hex bolts which hold the fascia in place, they should only be finger-tight. If you overtighten them, you may crack the fascia and/or prevent the buttons from working correctly.

Final wiring positions and colors:

Empeg IIS pads Int. empeg wires * Int. white conn pos ** Sled Tuner Plug BlueGigaEmpeg Tuner Plug Bluetooth Chip Usage
1 IISC Yellow+Green wire Third from end 7 Purple 7 SCK 30 PCM_CLK Serial Clock
2 IISW Brown wire Right end 2 Grey 2 WS 29 PCM_SYNC Word Select aka Sync
4 IISD1 Red wire Second from end 1 Pink 1 SDIN 27 PCM_IN Serial Data aka PCM Audio Data
4 Black 4 GND GND Universal Ground
8 Blue 8 12vPower Power to voltage regulator
*  (These are the interior wires running between the docking sled and the
    white connector on the empeg motherboard.)

** (Original positions of these wires on the white connector near the
    Ethernet plug, now disconnected from that connector.)

Disconnect all tuner modules from all sleds you own

After completing the I2S wiring modification, the external empeg tuner module will no longer work. Also, damage may occur if you connect a tuner module to a modified empeg.

To prevent problems, make sure to disconnect any tuner modules from any docking sleds that you own, and pack them away somewhere safe. After making the I2S wiring modification to the empeg, do not use a tuner module any more.

Label your empeg with the supplied stickers, which tell your future selves not to use this particular empeg with tuner modules any more.

Empeg Car configuration changes

The following configuration changes are required for BlueGigaEmpeg to work correctly.

Player firmware version:

I have tested the BlueGigaEmpeg with version 2.00 of the empeg Car software. It is designed to work with version 2.00 Beta 13 or version 2.00 Final. I have not tested it with the 3.0 Alpha version of the empeg Car software, but theoretically it should work.

Edit the config.ini on the player:

Using the Emplode or Jemplode software, edit the empeg Car's config.ini as follows.

If you are using Emplode on Windows, you must first edit the Microsoft Windows registry before it will allow you to alter the config.ini. First, run REGEDIT.EXE in Windows and modify the following key:

 HKEY_CURRENT_USER
   Software
     SONICblue
       emplode
         2.0
           Settings
              (Inside the "Settings" key, create a new DWORD value named:)
                allow_edit_config
                  (with a value of)
                    1              

Then restart the Emplode software. Emplode will now have a menu option which allows you to edit the config.ini on the player.

Change the settings in config,ini as follows (adding new section headers such as [hijack] only if that section does not already exist):

[hijack]
suppress_notify=2

[output]
notify=1

[serial]
car_rate=115200

These settings are case-sensitive. Make sure to synchronize with the player after changing the config.ini settings.

Upgrade the empeg Car's Hijack kernel and set "Serial Port Assignment"

The latest version of Hijack is required in order for BlueGigaEmpeg to work correctly. Install the latest Hijack Kernel onto the empeg Car player if it is not already installed. Link to the Hijack kernel is found in the Prerequisites section of this document. Make sure it is Hijack version 524 or later.

In order to install the latest Hijack Kernel onto the empeg, you must connect the empeg directly to your computer's RS-232 serial port, or to a USB-to- RS-232 adapter cable if your computer does not have an RS-232 serial port. Make sure the serial port drivers are installed and that you can see the empeg bootup messages correctly through a serial terminal program.

To install the Hijack kernel, run Tony's Empeg Logo Editor. Link to the Logo Editor program is found in the Prerequisites section of this document. This program is a Windows program, but it should also work correctly on a virtualized version of Windows. For example, I have used it successfully running under Parallels on a Mac. On the File menu of the logo editor program, select "Kernel Flash Utility" and follow the instructions.

Once Hijack is installed, open up the Hijack kernel settings on the player via a long-press on the player's rotary encoder dial. Change "Serial port assignment" to "Player uses serial port" and follow the on-screen instructions to reboot the player.

Modify empeg's power connection to car

I recommend that for this installation, you connect the empeg's wiring harness to your car differently than if it were a standard car installation. It might not be required for your installation, but it was required for mine, so doing this now could save you time and hassle later.

This BlueGigaEmpeg is designed to turn the empeg into a secondary Bluetooth input into a modern car stereo, rather than being the car's main stereo system. In this situation, the empeg's sleep mode, the empeg's "memory" power connection, the way the BlueGigaEmpeg module gets its power from the empeg tuner connector, and the way the car stereo issues Bluetooth commands when you shut off the ignition, all combine to cause some interesting problems with power state transitions.

I found that if I connected the empeg to my car's power via the regular method (i.e., car accessory power to the orange ignition wire on the sled, and car constant 12v power to the yellow memory wire on the sled), then there were certain unusual states that it could get into. Sometimes I would shut off my car, but the empeg would come back up out of sleep mode and play tracks silently to an unconnected Bluetooth module, draining my car's battery.

To prevent this problem from happening to you, I recommend connecting power between the car and the empeg like this instead:

That should be all you need. No analog audio or amplifier connections, because the Bluetooth takes care of that now. No cellphone mute wire, because the Bluetooth takes care of that now. No amp remote wire, because there is no amp connected directly to the empeg.

When connected this way, the empeg does not receive a 12v constant power source. Instead, it will completely lose all power when you turn off the ignition, rather than going into sleep mode. The empeg and its attached BlueGigaEmpeg module will always power on and off at the same time as the car stereo, and nothing will get confused about power state. You might lose the date/time information on the empeg sometimes, but your modern car likely has a perfectly functional clock of its own. The empeg is already designed to save its playback position when it unexpectedly loses power, so it will continue to work correctly in this wiring scheme.

In a normal car install, with analog audio and an amplifier connected to the empeg, the wiring scheme described above would cause a pop sound when turning off the ignition. But with the BlueGigaEmpeg, all audio is digital, and goes through the Bluetooth connection, so there will not be a pop sound.

By the way, I'm using a set of "Add-a-circuit" fuse adapters to connect my empeg to the car's power at the car's fuse panel. This let me avoid the hassle of trying to tap into the factory stereo wiring. If you use this method, make sure to research to find the correct size for your car. For example, mine are the "low profile mini fuse" type. Some helpful links:

Connect BlueGigaEmpeg to empeg Car player

Only do this step after completing the prior step in this document titled "Modify empeg Car interior for I2S digital audio connection".

If the I2S wiring modification has been completed, connect the tuner module connector from the empeg Car player docking sled to the tuner connector on the BlueGigaEmpeg module. This plug carries 12v power to the BlueGigaEmpeg module and also carries I2S audio data.

Connect the RS-232 serial plug from the empeg Car player docking sled directly to the serial port on the BlueGigaEmpeg module. This plug carries the play/pause/next control commands from the BlueGigaEmpeg to the empeg Car player software, and also carries the track metadata (title/artist/etc) from the empeg Car player software to the BlueGigaEmpeg module.

USB Connector:

The USB "type B" connector on the outside of the BlueGigaEmpeg module enclosure is left disconnected during normal operation. It is only used for debugging, and for uploading the latest Arduino sketch to the BlueGigaEmpeg module. However, if you are mounting your BlueGigaEmpeg module permanently in a hard-to-reach location in your car, make sure to run a USB cable from this port to a reachable location, so that you can connect a laptop to it later. See the section of this document titled "Debug Bluetooth Connection if needed" for more details on how to use the USB connector for debugging.

Mounting

The BlueGigaEmpeg module can be permanently mounted to the car if needed. Four mounting tabs are included on the casing for this purpose, though Velcro or other methods can work too. It can also be simply stuffed in somewhere with the rest of the attachment wiring, as long as it's not "dangling" and putting stress on the attachment cables.

When mounting:

Usage

Pairing

Turn on your car's ignition to apply power to the empeg. This should also apply power to the connected BlueGigaEmpeg module via the tuner module connector. Make sure the empeg is not in "sleep" mode, since power to the tuner module connector is turned off in sleep mode.

The first time you use the BlueGigaEmpeg, you will need to pair it with your Bluetooth car stereo. The BlueGigaEmpeg has a recessed RESET/PAIR button for this purpose.

Pairing Procedure:

Car and empeg should be playing nicely together now, assuming everything else is working correctly. Audio from the empeg comes out of your car stereo's speakers, the car stereo's track change controls will change tracks on the empeg, and the track titles will appear on the car stereo's screen.

See Troubleshooting if you encounter any problems.

Normal operation

After you have successfully paired with your car stereo once, you should not need to pair it again each time you get in the car. It should automatically reconnect each time you start your car.

Some car stereos will let you pair your phone and the empeg at the same time. Not all car stereos will have this feature. My Honda allows me to do this, and it works like this: When pairing, the car's touch screen lets me choose whether the paired device is a phone device, a music device, or both. I choose to pair my phone as a phone, and the empeg Car as a music device. Then, each time I start my car, they both pair up correctly. I can use the steering wheel controls to initiate a speakerphone call, which automatically pauses playback on the empeg, and resumes playback after I hang up the call.

The empeg Car should automatically pause its playback when you turn off the car stereo. It should also pause when you switch to another input source on your car stereo, such as switching to the radio or to the CD player. It should automatically resume playback when you turn the stereo on, or switch back to the Bluetooth input.

The empeg Car should automatically pause its playback immediately after its boot sequence is complete, then it will wait until there is a successful Bluetooth connection, then it will resume playback after Bluetooth is connected. If Bluetooth is already connected by the time that the empeg boot sequence is complete, it will resume playback when it is done booting up. This prevents the empeg from playing music silently while it waits for your car stereo to boot up. This is needed for some cars whose stereos have long boot times which exceed the empeg boot time. My Honda has a stereo like that, it takes about 25 seconds to boot up and be able to play Bluetooth music, more than twice as long as the empeg takes to boot up. Without this feature, there would be about 15 seconds' worth of song "lost" (played silently) each time I started my car.

The BlueGigaEmpeg implements a specific set of Bluetooth controls. Not all car stereos support all of these controls. For instance, my Honda does not do Fast Forward or Rewind with any Bluetooth device, so those particular features don't work on my Honda.

Implemented:

Not implemented:

The items below are not implemented on the BlueGigaEmpeg, but you can still do them on the empeg's front panel.

Sleep mode:

The empeg tuner connector only supplies power to the BlueGigaEmpeg module if the empeg is awake. If you put the empeg into sleep mode via a long press on the top button, it will go to sleep, but that also means the Arduino+Bluetooth assembly stops receiving power. This is actually good: you want to be able to turn the Bluetooth on and off and reboot it sometimes, and it's easy to do that just by sleeping and waking the empeg from its front panel.

Most of the time, leave the player in "awake" mode. When you shut off the car ignition, the player fully shuts down. When you start the car again, the empeg starts up in "awake" mode and immediately supplies power to the BlueGigaEmpeg module, which then automatically connects to the car stereo head unit.

Troubleshooting

Reboot the Bluetooth module

Some problems can be solved by rebooting the Bluetooth module. Simply sleep the empeg by pressing and holding the top button, then wake it up again with another button press. This bounces power to the tuner module connector where the BlueGigaEmpeg gets its power.

Always use the latest firmware

When troubleshooting, always start with the most recent versions of the BlueGigaEmpeg firmware and Hijack Kernel.

Pairing issues

When you press the recessed RESET/PAIR button on the BlueGigaEmpeg, it does the following:

Paired devices share a set of security keys with each other. Pressing the recessed RESET/PAIR button on the BlueGigaEmpeg module erases previous pairings, thus erasing those keys from the WT32i chip. This is important if your car stereo remembers an onscreen list of existing paired Bluetooth devices and gives you the option to manage those devices: The empeg Car's entry in that list becomes invalid when you press its RESET/PAIR button. So you will need to delete the empeg Car from that list before trying to pair it a second time. Conversely, if you delete the empeg Car from your car stereo's list of paired devices, you'll also need to clear the security key from the Bluetooth chip by pressing the RESET/PAIR button on the BlueGigaEmpeg module.

Sometimes Bluetooth devices can get into odd states which require a reboot to fix. If you're having pairing troubles, try rebooting the BlueGigaEmpeg by sleeping and waking the empeg with a long press on the top button of the front panel, followed by another button press to wake it. If that doesn't work, try rebooting both devices: Reboot the car stereo by turning the ignition off and on again, and also reboot the BlueGigaEmpeg by sleeping and waking the empeg.

When trying to pair, turn off any nearby Bluetooth devices which are in "discoverable" mode or "pairing" mode. The BlueGigaEmpeg has no user interface, so it has no way to pick and choose which device it's trying to pair with. It will attempt to pair with the first one it sees, so if there's more than one pairable device in the immediate vicinity, it might not get the one you think it's getting.

If necessary, experiment with different positioning of the BlueGigaEmpeg module in relation to your car stereo. The Bluetooth chip is located near the top center of the unit, near the recessed RESET/PAIR button. It will work best if it has line of sight to your car stereo and/or is physically close to it.

Other issues

If there is good audio, but commands such as next/previous track and play/pause don't work, and if track titles do not display on your car stereo, See the section titled "Test AVRCP behavior and set serial port crossover jumpers if needed".

Check to make sure that the wires for the serial port connection (or any other connection for that matter) have not pulled out of the back of the docking connector on the empeg sled. This is a common problem. See here for the correct wiring scheme: http://empegbbs.com/ubbthreads.php/topics/370309/

If AVRCP commands and track titles fail to work intermittently, and it has occurred after you have uploaded a new version of the BlueGigaEmpeg firmware to the Arduino, then check to make sure that your Arduino IDE's compiler files have the corrected values for the serial port buffers as described in the Updating firmware section.

If you have trouble with the empeg waking up after you shut off the car ignition, see the section here: "Modify empeg's power connection to car".

If you notice that there is a slight delay between the visuals on the empeg screen compared to the sound coming out of the car stereo speakers, this is normal. The Bluetooth chip uses the Sub Band Codec (SBC) which is the default codec for A2DP audio, and that codec has a slight latency.

Check to see if the issue you're encountering is a known bug or a previously-closed bug:

If you have other problems not listed here, see this section: "Debug Bluetooth connection if needed".

Set Bluetooth PIN code if needed (most likely not needed)

BlueGigaEmpeg does not usually require a PIN code to successfully pair. Before trying to modify the PIN code, simply try pairing first.

Some stereos will prompt with a random set of digits on the screen and ask you to confirm those digits on the Bluetooth device with a Yes/No prompt. This is not the same thing as a PIN code. In those cases, the BlueGigaEmpeg will try to automatically answer this prompt with a "yes" answer so that no user interaction will be needed.

In rare cases where a special PIN code is is needed, there is a place in the "BlueGigaEmpeg.ino" source code file where you can modify the PIN to something other than "0000". Find the line in the sketch that defines the variable "btPinCodeString". That line contains the "0000" default PIN code. Change it to your correct PIN code for your stereo and re-upload the sketch to the Arduino. It can accept PIN codes up to 16 digits long.

Test AVRCP behavior and set serial port crossover jumpers if needed

If you are lucky, the empeg will respond to commands from your car stereo's controls for play, pause, next track, etc., and the car stereo will display track titles on its touchscreen. This is done via the Bluetooth Audio Video Remote Control Profile ("AVRCP"), and the serial port connection to the empeg Car.

However, if the Bluetooth pairs successfully and streams music, but you are unable to play/pause/next the empeg via the car stereo's controls, and the track titles don't show up on the car stereo's screen, then try the following.

Debug Bluetooth connection if needed

Everything hopefully will work perfectly, but there may be bugs in the Arduino code because this was not tested with a wide range of Bluetooth gear. If you need to debug the connection, here are some helpful tips.

Debug mode with Arduino

The BlueGigaEmpeg module is an Arduino command+control board, sandwiched to a custom interface board, connected to a BlueGiga WT32i Bluetooth chip. The firmware running on the Arduino allows for a terminal debug interface to the Bluetooth chip. This is automatically invoked when you connect a USB cable from your computer to the Arduino's USB connector, which is the USB-B connector accessible on the outside of the BlueGigaEmpeg casing. Once connected, a USB-serial port will appear as a device on your computer through the UART chip built into the Arduino.

Installing device drivers for the Arduino's USB-serial UART will be needed. To install the device drivers and get the Arduino Serial Monitor working, install the Arduino IDE by following the instructions in the section "Updating firmware". This will also ensure that you are updated to the latest BlueGigaEmpeg firmware before trying to debug any problems.

Once the device drivers are working for the Arduino's USB-serial UART, then the "Serial Monitor" feature built into the Arduino IDE program will work as the debug console. To run it, do the following:

When connected to this serial terminal interface, everything you type is sent to the Bluetooth chip as a command, and all of the chip's responses are shown on your screen. You will also see all commands that the Arduino sends to the Bluetooth chip automatically, and see all of the chip's responses to them.

You may also type certain specific commands to the serial port to control the empeg. Type a single character followed by pressing the Enter key. The following commands are supported:

Power up sequence (startup order) for Arduino debugging:

The BlueGigaEmpeg module can connect to any of these power sources:

Because both power sources can be connected at the same time during debugging, if you are using the USB cable for debugging mode, the sequence order of connecting the cables and applying power is important.

If you connect the BlueGigaEmpeg to the empeg docking sled and power it up, and then attach the Arduino USB cable to the computer afterward, then the Arduino USB port communications with the PC are not initialized (power from the tuner connector came first) and so the USB connection will not identify itself to the computer. This causes a problem: The computer cannot find the Arduino's USB UART and is unable to connect to the debug port.

So, to successfully debug via the Arduino USB debug cable, you must connect the USB cable to your computer first, with the computer on, before applying power to the empeg (or before waking the empeg from sleep). Meaning, if you are debugging in the car, you should connect the USB cable first, and then turn on the ignition. If you are debugging indoors, connect the USB cable first, then connect the AC adapter to the empeg.

If you are doing debugging/troubleshooting indoors, it's possible to use the empeg's 12v AC adapter, connected to the player's AC adapter input. The BlueGigaEmpeg module works in both AC/Home mode and DC/Car mode. However, a sled wiring harness is still needed in AC/Home mode, because the BlueGigaEmpeg still needs the tuner and serial connectors on the harness in order to function.

Sending a bug report:

Variables in the Arduino sketch:

There are some flag variables in the BlueGigaEmpeg.ino sketch file, defined at the top of the sketch, which can be modified if you need them when debugging. Change them as you see fit, and re-upload the sketch to the Arduino. See the "Updating firmware" section for information on uploading the sketch to the Arduino.

Remember to change flag variables back to their default values when you are done debugging, as some of them can slow down the responses on the BlueGigaEmpeg and cause the Bluetooth communication to malfunction intermittently.

The most common flags you might want to change are these. Search for these flags in the BlueGigaEmpeg.ino sketch file. Refer to the code comments accompanying these flags in the file to understand what they do.

  displayEmpegSerial
  displayTracksOnSerial
  logLineByLine
  PerformUtf8Conversion

Useful debugging commands in the BlueGiga WT32i iWrap command language:

Typing any of these into the serial monitor should send these commands to the Bluetooth chip directly. Many will echo a response. The Bluetooth chip will respond with "SYNTAX ERROR" if there is a problem with any command.

  SET
  Displays Bluetooth module's current settings.

  LIST
  Displays a list of current actively connected devices, including all
  AVRCP and A2DP channel details.

  SET BT PAIR
  Displays Bluetooth module's current list of paired devices.

  SET BT PAIR *
  Deletes all saved Bluetooth pairings on the Bluetooth module. The
  asterisk is important, it's the part that does the deleting.

  SET CONTROL RECONNECT *
  Turns off automatic reconnection attempts on the Bluetooth module until
  the next time it pairs up with something.

  RESET
  Reboots the Bluetooth module, saving current settings. Does not erase
  any existing saved Bluetooth pairings nor change any settings.

  SET RESET
  Resets the Bluetooth chip itself to its factory defaults. Does not
  remove existing pairings, those are still kept. Note: you should restart
  the Arduino after using "SET RESET" in order to have it apply its
  customized default settings to the Bluetooth chip again.

See the iWrap 6.x command reference and the AVRCP command reference documents, linked in the "Resources" section, for more details on the incredibly rich and complex command language of this Bluetooth chip.

A note about response ordering in the debug console:

Sometimes the responses from the Bluetooth module do not show up on the screen immediately, because the main input loop in the Arduino sketch might not have caught up and read all the responses from the serial port yet. So, for example, a bad command might be issued several lines back, but the "SYNTAX ERROR" response doesn't appear until later. So don't assume that any command/response pair will always appear together on the debug console screen.

Updating firmware

Instructions for updating the firmware on the BlueGigaEmpeg module.

Modify your Arduino compiler for larger buffer size

The firmware on the BlueGigaEmpeg module resides in an Arduino chip which is part of the BlueGigaEmpeg assembly. To update to the latest BlueGigaEmpeg firmware on the Arduino, you will be uploading the sketch to the Arduino ("sketch" is the name for an Arduino program).

But there is a modification that you must perform first: You must increase the default size of the Arduino serial port buffers. This can only be done by modifying the compiler's files directly. If this isn't done, then after you upload new firmware to the Arduino, there will be intermittent errors in the BlueGigaEmpeg operation, such as commands sometimes being missed and track titles sometimes not working or being incomplete.

Download and install the compiler:

Download the Arduino IDE, linked from the Prerequisites section of this document. Make sure to download and install the standalone version of the Arduino IDE; do not try to use the Arduino web editor. Though the web editor is convenient, it won't work for this project because it doesn't have the capability of changing the header files to increase the size of the serial port buffers.

Install the Arduino IDE. It will be a different installation procedure for different operating systems.

Edit compiler file to increase serial port buffer size:

Once it is installed, you'll need to edit one of the compiler's files to increase the size of the Arduino's serial port buffers. The file that you need to edit will be the same on all operating systems, but the location of the file will be different depending on which OS you're using. The location will also be affected by whether or not you're using an update to the Arduino's "Boards" files, or if your Arduino IDE is a stock installation without any Boards updates.

Locate the correct file to edit:

We're looking for a file called "HardwareSerial.h", but there may be more than one copy of the file on your hard disk, and it's hard to tell which one that the Arduino compiler is going to use. The quickest way to reliably find the right file is to get a certain example document opened, fish up the directory tree to find the right parent folder, and then fish down again to find the right subfolder. This procedure looks a little crazy, but it works.

Perform the edit:

Open the "HardwareSerial.h" file in your favorite quick text editor program. Once you have it open, locate the following code lines:

         #if !defined(SERIAL_TX_BUFFER_SIZE)
         #if ((RAMEND - RAMSTART) < 1023)
         #define SERIAL_TX_BUFFER_SIZE 16
         #else
-->      #define SERIAL_TX_BUFFER_SIZE 64
         #endif
         #endif
         #if !defined(SERIAL_RX_BUFFER_SIZE)
         #if ((RAMEND - RAMSTART) < 1023)
         #define SERIAL_RX_BUFFER_SIZE 16
         #else
-->      #define SERIAL_RX_BUFFER_SIZE 64
         #endif
         #endif

Now edit the "64" lines indicated above, and change the "64's" to these new numbers instead:

   #define SERIAL_TX_BUFFER_SIZE 128

   #define SERIAL_RX_BUFFER_SIZE 256

In other words, you are making the larger of the two possible transmit buffer sizes even larger (changing 64 to 128) and the larger of the two possible receive buffers even larger (changing 64 to 256).

Leave the "SERIAL_xx_BUFFER_SIZE 16" lines alone. Only modify the ones that were originally set to "64" and increase them as described above.

Save the file.

Note: If you reinstall or upgrade the Arduino IDE program, or if the Arduino prompts you to update your "Boards", you will need to re-locate the correct file again, and perform this edit again, before uploading a new version of the BlueGigaEmpeg sketch to the Arduino.

Compile and upload the latest version of BlueGigaEmpeg.ino to the Arduino

Obtain the BlueGigaEmpeg.ino Arduino project file from GitHub, linked in the Prerequisites section of this document. In the GitHub project web site for BlueGigaEmpeg, find the button titled "Clone or download" and obtain the repository. Most people will select "Download Zip" to download the zip file, though if you are a Git user, feel free to clone the repository or select "Open in Desktop". If you are downloading the zip file, unzip the entire project into a folder named "BlueGigaEmpeg" on your computer's hard disk. This will likely require renaming the folder to "BlueGigaEmpeg" after unzipping the file.

Important:

The folder in which the BlueGigaEmpeg.ino file resides must be named "BlueGigaEmpeg" and not, for example, "BlueGigaEmpeg-Master", because the Arduino IDE won't recognize it as an Arduino project file unless the parent folder name is the same as the ".ino" file name. If you're synchronizing with the BlueGigaEmpeg repository on GitHub via the "Git" tool, then the folder will automatically be named correctly, but if you are downloading and unzipping the zip file, you will likely have to rename the folder after unzipping it.

Connection order special instructions:

The Arduino is located inside the enclosure of the BlueGigaEmpeg module, and you upload the sketch to it ("sketch" is the name for an Arduino program) via the USB connector on the end of the BlueGigaEmpeg casing. Uploading the sketch to the Arduino may be done with the BlueGigaEmpeg module disconnected from the empeg Car. No external power source is required in this case, the Arduino gets its power from the computer via the USB cable in this situation. When connecting the Arduino to the computer via the USB cable, if that's the only connection, then no special connection order is needed.

In some cases, though, you may also want to upload the sketch to the Arduino while the BlueGigaEmpeg module is connected to the empeg Car. This is possible to do, however, special connection instructions are needed if you do this:

Upload the sketch:

Connect the USB cable from the computer to the Arduino USB connector. The Arduino USB connector is the USB "type B" plug which is exposed on the end of the BlueGigaEmpeg enclosure.

When first plugging the Arduino into the computer, it may need to install device driver files for the USB/serial connection to the Arduino. In theory, the installer for the Arduino IDE should have taken care of installing these drivers for you. If not, search for help documents online about getting drivers for the "Arduino Mega 2560" chip working.

Once the device drivers are installed and working, do the following:

You should see some serial port output from the Arduino. If you don't already see this, try closing and re-opening the Serial Monitor.

If the Serial Monitor is working, then you are ready to compile and upload the sketch to the Arduino Mega board. Do the following:

Close the Arduino IDE and disconnect the USB cable from the computer. The USB cable should be left disconnected from the computer during normal operation of the BlueGigaEmpeg module. It is safe to leave a USB cable attached to the BlueGigaEmpeg module as long as you don't have the other end always hooked up to a computer. For example, if the BlueGigaEmpeg module is permanently mounted in a hard-to-reach place in your car, you should leave a USB cable attached to it which extends to a reachable location. This will make future firmware updates and debugging easier by bringing a laptop computer into your car.

Technical Data

All sections below are for developer reference, and should not be needed by end-users of the BlueGigaEmpeg module unless performing repairs or other maintenance.

Bluetooth Chip Firmware Upgrade

Note: This is only for developer reference. This should only be needed if you are getting a replacement board directly from BetzTechnik, or you are performing some type of maintenance or debugging.

The firmware upgrade is done with a USB-A-to-micro-USB cable.

Steps:

Set jumpers and switches

Note: This is only for developer reference. This is only needed if you have received a replacement board from BetzTechnik or you are doing other maintenance work.

On the BlueGigaEmpeg PCB:

Set the jumpers to "Crossover" position as shown on the silkscreen printing on the board.

On the BetzTechnik WT32i Breakout board:

Set the power switch "U5" on the BetzTechnik board to the "down" position (looking at the board so that the board's large silkscreen name is readable) which is the "off" position for this switch.

Low Latency Codec (APT-X LL) information

I have abandoned attempts to get the WT32i chip working with a low-latency codec (APT-X LL) because:

I have made extensive notes on the specialized hardware and software, and the required programming steps, needed to install APT-X LL, and I can discuss this with anyone who needs this information.

Hardware interface information and notes (internal board connections)

The BlueGigaEmpeg interface board from Pad2Pad implements everything described below. The information below is for developer reference only, and you should not need to do any of the connections below yourself, unless you are developing your own interface board.

Arduino must be the "Mega" model with three hardware serial ports built in. I tried it with an "Uno" model using software serial ports, and it had problems where characters sometimes got dropped, and it could not keep up with the data rates that I wanted.

Links to Schematics and CAD files:

Arduino and RS-232 port, critical connections:

Arduino serial port 1 (Tx1/Rx1) connects to the empeg's RS-232 port, but it must go through an RS-232 converter circuit based on a MAX232 chip. This is necessary because you can't connect an actual RS-232 cable directly to an Arduino, the voltage and signaling are different. So it must go through the MAX232.

The RX/TX crossover configurations for the MAX232 and the RS-232 plug on the BlueGigaEmpeg can be confusing. The empeg Car sled serial port may or may not be already wired into a crossover configuration. I have seen both cases. There are jumpers on the BlueGigaEmpeg PCB to swap the RX/TX configuration to the serial port as needed. Default shipping configuration is "Crossed" to compensate for a straight connection coming out of the sled.

I am using a TI MAX232E for this implementation. The connections for the MAX232 are as follows:

MAX232 Pin 1 and 3 aka C1+/C1- - Bridge with a 2.2uf ceramic capacitor
MAX232 Pin 4 and 5 aka C2+/C2- - Bridge with a 2.2uf ceramic capacitor
MAX232 Pin 2 aka V+ - Connect to Arduino +5v via a 2.2uf ceramic capacitor
MAX232 Pin 6 aka V- - Connect to GND via a 2.2uf ceramic capacitor
MAX232 Pin 11 aka TTL-I1 - Connect to Arduino Mega Board 18 aka Tx1 
MAX232 Pin 12 aka TTL-O1 - Connect to Arduino Mega Board 19 axa Rx1
MAX232 Pin 13 aka 232-I1 - Connect to RS-232 plug pin 3 aka Tx via jumpers
MAX232 Pin 14 aka 232-O1 - Connect to RS-232 plug pin 2 aka Rx via jumpers
MAX232 Pin 15 aka GND - Connect directly to GND
MAX232 Pin 16 aka VCC - Connect directly Arduino +5v output.
MAX232 Pin 16 aka VCC - Also connect to 0.1uf ceramic capacitor which
                        then connects to GND. (Pin 16 is two connections,
                        one to Arduino +5v and then also to the smoothing
                        capacitor which bridges across 5v and GND. Place
                        this cap as close to pin 16 as possible.)
Note:

The illustration below has some jumpers between pins on the RS232 plug.
For example, it shows pin 6 jumpered to pin 4, and pin 7 jumpered to pin
8. Do not implement those particular jumpers, leave those pins
disconnected.

MAX232 Circuit

The empeg tuner connector is used to supply power to the Pololu step-down transformer power supply, and from there, on to the rest of the assembly. Blue wire on tuner connector connects to the voltage input pin on Pololu, and the black wire on the tuner connector connects to the Pololu ground input pin.

Arduino "Vin" pin is connected to the 7.5v output rail from the Pololu step-down transformer power supply circuit.

Grounding: Multiple Arduino GND pins connected to the output ground rail of the Pololu power supply.

Arduino and Button: Arduino pin 52 digital I/O pin, connected to one of the ground legs of button. This same line (or the other ground leg of the button) also goes through a 10k pulldown resistor to ground. One of the + legs of the button connects to +5v coming from the Arduino 5v pin. Follow examples on the Internet of how to implement a simple temporary pushbutton on an Arduino: https://www.arduino.cc/en/Tutorial/Button

Note: The BlueGigaEmpeg printed circuit board, Rev. 6, has the position of the 10k button resistor labeled on the wrong side of the PCB. It will work on either side, but I discovered after manufacturing the Rev. 6 boards that there is better clearance from the Arduino components if you move it to the other side of the board. Rev. 7, not yet manufactured at the time of this writing, has it corrected in the CAD file already.

Arduino and Pair mode indicator LED: Arduino pin 50 digital I/O pin, connected to +LED through a resistor. Then, -LED connect to GND. The value of the resistor is determined by an online LED resistor calculator and the LED spec values. Example: If using a blue LED with a 3.2v forward voltage and 20ma current, and the Arduino analog power supply from the analog pins will be 5 volts, then use a 100 ohm resistor for this value. An online LED resistor calculator can be found here: http://led.linear1.org/1led.wiz

LED soldering height: To fit into the hole in the casing well, the top of the diode assembly itself inside the LED lens (the metal part) should top out at the same height as the top of the button plastic. Lens will protrude higher than the button by vaguely 2mm or so.

LED anode: The positive/anode pin is the long lead. The positive pin is the side with the smaller metal bit visible inside the lens. The positive/anode pin goes into the hole on the PCB with the round pad. The negative/cathode pin goes into the hole on the PCB with the square pad. The triangle/bar symbol on the PCB silkscreen is this:

   positive  >|  negative

BlueGiga Bluetooth WT32i chip+board, critical connections:

BetzTechnik Bluetooth chip+board "Smd_2_pole_switch" or "U5" switch is set to the "off" position.

Bluetooth chip+board "5v" power pin NOT connected to anything.

Bluetooth chip+board "3v3" or "VDD_IO" pin connected to the 3v output coming from the Arduino.

Bluetooth chip+board "ENA" or "VREG_ENA" pin connected to the 3v output coming from the Arduino.

Bluetooth chip+board "BATT" pin connected to the 3v output coming from the Arduino.

Bluetooth chip+Board "Gnd" pin connected to the ground rail.

Bluetooth chip+board serial port "RX/TX" pins connected to the "TX2/RX2" pins (serial port 2) of Arduino. Note: This is a crossover connection, i.e., RX from the Arduino is connected to TX on the Bluetooth chip and vice-versa. Since this is at TTL level, you don't need to go through a MAX232 circuit. However, the Arduino is running at 5v TTL, and the BlueGiga chip runs at 3.3v. So you must voltage match them. Decrease the voltage for the Arduino TX2 output, by running it through a simple 50% voltage divider to step 5v TTL from Arduino down to 2.5v for the BlueGiga chip. The BlueGiga chip's transmit pin can stay at 3.3v and the Arduino will still read it just fine, so no changes are needed for that line. Schematic:

ARDUINO TX2-----VVVVV----+----VVVVV-----GND
               10Kohm    |    10Kohm
                         |
                         +--------------WT32i Rx

ARDUINO RX2-----------------------------WT32i Tx

Bluetooth chip+Board three I2S pins PCM_CLK, PCM_SYNC, PCM_IN connected to empeg IISC, IISW, IISD1 via a special modification to the empeg tuner module connector, as described in the section of this document titled "Modify empeg Car interior for I2S digital audio connection".

Each one of the three I2S lines will need to be reduced from 5v to 2.5v, to prevent frying the WT32i chip (I fried two chips this way until we figured this out). The I2S lines need to come in through a set of resistors arranged in a 50% voltage divider configuration, two 1.5k resistors for each one of the three lines. 1.5k is used instead of 10k to improve the S/N ratio on the I2S lines at the expense of more current draw from the SA7705H DSP chip on the empeg Car. This fixes GitHub issue #69. Example of one line (repeat a total of three times, one for each of the I2S connections):

EMPEG IISC-----VVVVV----+----VVVVV-----GND
              1.5Kohm   |   1.5Kohm                    (3x) 
                        |
                        +--------------WT32i PCM_CLK

Note: The BlueGigaEmpeg printed circuit board, Rev. 6, still has the old 10k value for the I2S voltage divider resistors silkscreened onto the board. The correct value for the I2S voltage divider resistors is 1.5k. Also, these are silkscreened onto the wrong side of the board. Theoretically they should work on either side of the board, but if you put them on the opposite side, then there's more clearance from the Arduino. Rev. 7, not yet manufactured at the time of this writing, has them corrected in the CAD file already.

Resources

Purchase:

Item Url
Empeg Car player http://empegbbs.com/ubbthreads.php/forums/11/1/For_Sale
Arduino MEGA 2560 R3 Board https://www.amazon.com/gp/product/B01H4ZLZLQ
BetzTechnik WT32i Breakout http://www.betztechnik.ca/store/p3/WT32i_breakout_board.html
BlueGigaEmpeg Interface PCB (Pad2Pad) https://github.com/tfabris/BlueGigaEmpeg/blob/master/BlueGigaEmpeg%20-%20Rev%207%20-%20PII%20Cleaned.pcb
BlueGigaEmpeg Enclosure (Shapeways) https://github.com/tfabris/BlueGigaEmpeg/blob/master/BlueGigaEmpeg%20Enclosure%20-%20Version%2002.stl

Download software:

Item Url
Arduino IDE https://www.arduino.cc/en/Main/Software
BlueGigaEmpeg sketch https://github.com/tfabris/BlueGigaEmpeg
Hijack Kernel for empeg http://empeg-hijack.sourceforge.net/
Tony's Empeg Logo Editor http://empegbbs.com/ubbthreads.php/ubb/download/Number/7067/filename/logoedit17.zip
WT32i iWrap Firmware Upgrade https://www.silabs.com/documents/login/software/iWRAP-Firmware-Releases.zip
FTDI USB driver http://www.ftdichip.com/FTDrivers.htm

Bluetooth information, schematics, and command references:

Item Url
iWrap Commands https://www.silabs.com/documents/login/reference-manuals/iWRAP6-API-RM.pdf
iWrap AVRCP Commands https://www.silabs.com/documents/login/application-notes/AN986.pdf
Dev Board User Guide https://www.silabs.com/documents/login/user-guides/UG215.pdf
Dev Board Data Sheet https://www.silabs.com/documents/login/data-sheets/WT32i-DataSheet.pdf
Dev Board Reference Design https://www.silabs.com/documents/login/reference-designs/Reference-Design-DKWT32i.pdf
Dev Board Full Schematic https://www.silabs.com/documents/login/reference-designs/DKWT32i-v2.2.zip
Bluetooth A2DP specs https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=8236
Bluetooth AVRCP specs https://www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=292286
BetzTechnik Schematic http://www.betztechnik.ca/uploads/2/5/6/7/25674051/wt32i.pdf
Pololu V.Reg #2853 Pinout https://a.pololu-files.com/picture/0J5779.1200.jpg
Arduino Mega Pin Map https://www.arduino.cc/en/uploads/Hacking/Atmega168PinMap2.png
Arduino Mega Standalone https://www.arduino.cc/en/Main/Standalone
ClassOfDevice generators http://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html
http://www.ampedrftech.com/cod.htm
MAX232 circuit for Arduino https://github.com/tfabris/BlueGigaEmpeg/blob/master/MAX232%20Circuit.png
TI MAX232E datasheet http://www.ti.com/lit/ds/symlink/max232e.pdf
BlueGiga Forum https://www.silabs.com/community/wireless/bluetooth
Empeg BBS thread http://empegbbs.com/ubbthreads.php/topics/370217/1
Designing low noise PCBs http://www.ti.com/lit/an/szza009/szza009.pdf

Upgrade firmware on the WT32i:

Item Url
Firmware Update Guide https://www.silabs.com/documents/login/user-guides/UG216.pdf
Page containing firmware https://www.silabs.com/documents/login/data-sheets/WT32i-DataSheet.pdf
Link to firmware zip file https://www.silabs.com/documents/login/software/iWRAP-Firmware-Releases.zip
Prolific PL2303 USB driver http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=225&pcid=41
FTDI USB driver http://www.ftdichip.com/FTDrivers.htm

Parts list used in BlueGigaEmpeg interface board:

Item Qty Url
BlueGigaEmpeg PCB (Pad2Pad) https://github.com/tfabris/BlueGigaEmpeg/blob/master/BlueGigaEmpeg%20-%20Rev%207%20-%20PII%20Cleaned.pcb
Pololu 7.5v V.Reg #2853 https://www.pololu.com/product/2853
TI MAX232E https://www.digikey.com/product-detail/en/texas-instruments/MAX232EIN/296-27963-5-ND/1511027
RS-232 connector https://www.digikey.com/product-detail/en/assmann-wsw-components/A-DS-09-A-KG-T2S/AE10968-ND/1241804
Molex tuner connector https://www.digikey.com/product-detail/en/molex-llc/0039295083/WM3923-ND/356037
Molex connector screws Qty:2 https://www.digikey.com/product-detail/en/b-f-fastener-supply/MPMS-003-0008-PH/H743-ND/274954
M3 hex bolts (for case) Qty:4 https://www.amazon.com/gp/product/B00SN36C6M
LED https://www.digikey.com/product-detail/en/cree-inc/C503B-BCN-CV0Z0461/C503B-BCN-CV0Z0461-ND/1922945
Reset button https://www.digikey.com/product-detail/en/e-switch/TL1105LF250Q/EG2506-ND/378972
Jumpers 0.10 pitch Qty:2 https://www.digikey.com/product-detail/en/te-connectivity-amp-connectors/2-382811-0/2-382811-0-ND/1864296
Male conn. headers, 3x2 https://www.digikey.com/product-detail/en/molex-llc/0010897060/WM9874-ND/3068084
Male conn. headers, 18x2 https://www.digikey.com/product-detail/en/3m/961236-6404-AR/3M9466-36-ND/2071927
Male conn. headers, 22x1 Qty:2 https://www.digikey.com/product-detail/en/3m/961122-6404-AR/3M9457-22-ND/2071905
Male conn. headers, 10x1 https://www.digikey.com/product-detail/en/3m/961110-6404-AR/3M9457-10-ND/2071896
Male conn. headers, 8x1 Qty:2 https://www.digikey.com/product-detail/en/3m/961108-6404-AR/3M9457-08-ND/7104637
Fem. conn. headers 22x1 Qty:2 https://www.digikey.com/product-detail/en/3m/929850-01-22-RA/929850E-01-22-ND/1094203
2.2uf Ceramic Capacitors Qty:4 https://www.digikey.com/product-detail/en/murata-electronics-north-america/RCER71H225K2K1H03B/490-11889-ND/4277808
0.1uf Ceramic Capacitor https://www.amazon.com/gp/product/B071VVTC7Z/ref=oh_aui_detailpage_o04_s00
1.5k ohm resistors Qty:6 https://www.amazon.com/gp/product/B077FMSR86/ref=oh_aui_detailpage_o00_s00
10k ohm resistors Qty:3 https://www.amazon.com/gp/product/B0185FIOTA/ref=oh_aui_detailpage_o02_s00
100 ohm resistor https://www.digikey.com/product-detail/en/stackpole-electronics-inc/CF18JT100R/CF18JT100RCT-ND/2022718
Jumper Wires 9.5 inches Qty:3 (lying around)
3M Command Strips (hold down Vreg) Qty:1 (lying around)

Test, packing, and shipment checklist

The following things are verified before packing and shipping a BlueGigaEmpeg: