Becker Grand Prix 7990
I've bought a Becker 7990 headunit (HU) Here's a link to the Becker website. The Becker headunits sadly lack an infrared input for remote control. But, there is a possibility for a wired remote on the Mini-ISO connector in the back.
Michael has an excellent website that focuses on the Unilink interface. This spawned my interest in making my own remote control adapter. I bought a Dietz AD9-8102 to test the remote control capabilities.
The remote control is wired to the C3 connector. +12V can be supplied from the head unit, as well as RS 232 Tx and Rx signals.
Serial protocol format
The format of the signal is ASCII strings sent on a 9600 baud 8N1 RS232 interface. The Becker HU must be set in listening mode at power on (connecting +12V), this is done by sending four consecutive strings with 1s intervals. I call this the Initialize command. If no such strings are sent the head unit will not recognize any remote commands and only regulary output some serial data, most probably an iPod detection string, but it could be a alive-and-well signal or other.
Pressing keys on the remote control sends a unique datagram (ASCII string) and releasing it sends another. The key release datagram is the same for all keys. There is no acknowledge from the head unit when a correct command is received, but I've seen some error messages on incorrect checksums and similar.
Datagram /string format
Datagram format is as follows: Start-Length-Source-Command-Data-CRC-End
Start is the ASCII STX command (0x02), and each element consist of two nibbles in Hex notation. All strings end with a ASCII Carriage Return <CR>(0x0D). The Initialize datagram looks like this:
ASCII: <STX>0BF05AA504<CR> Hex dump for this is: 02 30 42 46 30 35 41 41 35 30 34 0D
0B is Length of string, here 11 bytes
F0 is Source (this does not change throughout all the command strings)
5A is Command
A5 is Data
04 is Checksum, a calculated CRC like this: 0x0B xor 0xF0 xor 0x5A xor 0xA5
I've found that the following command datagrams are recognized by the Becker HU:
String Command
<STX>0BF05AA504<CR> Initialize
<STX>0BF05500AE<CR> Key release (all keys)
<STX>0BF05502AC<CR> Volume +
<STX>0BF05501AF<CR> Volume -
<STX>0BF0990163<CR> Track +
<STX>0BF0AA0150<CR> Track -
<STX>0BF05540EE<CR> Mode
<STX>0BF055208E<CR> Tel key
I have experimented with several other command and data values to no avail. I found no other commands.
Now, the next task will be to figure out what specification or protocol this is. I have a clue in this document: LINK PDF doc also available on my web server here if the link dies.
The document describes a in-car multimedia system, see page 14, I suspect that the serial protocol is part of the QNX system spec. We'll see, I'll find out some day...
Test environment
I made the control strings with according checksum in MS Excel. Excel has no XOR funtion, so you'll need to make a small function in VBA to be able to calculate the CRC:
Function HEXOR(A As String, B As String, C As String, D As String) As String
HEXOR = Hex(CLng("&H" & A) Xor CLng("&H" & B) Xor CLng("&H" & C) Xor CLng("&H" & D))
End Function
For those not familiar with Excel: Tools/Macro/Visual Basic Editor, then: Insert/Module.
The cell for doing the CRC calculation is like this: = HEXOR(C5;C6;C2;C3) (Source in C5, Length in C6, Command in C2, Data in C3)
I merged the strings in a cell like this: =CONCATENATE("^B";C5;C6;C2;C3;C7;"^M")
This produces string that can be used in Windows 3.1 Terminal.exe: ^B0BF05AA504^M
Set Terminal to 9600/8N1 and define a Function key with this content. Now it's easy to send commands from the PC terminal t the Becker head unit.
iPod connection
The Becker iPod adapter also use the serial port for communication. It is therefore sadly not possible to combine a remote control and the iPod adapter. That's a shame, I would really like to do that.
I logged the iPod communication at 9600 baud before i rigged down my test environment, but this may be the wrong speed. Here's a text file. Henrik in Denmark gave me some information on this protocol, stating that it use 19200 baud. I haven't dug deep into this, but here's a link to a page explaining the protocol.
By the way, the becker iPod adapter is only a signal conditioning unit and contain no logic as far as I can see. That means that all the protocol handling is made by the Becker HU itself.