All errors are prefixed with a '^!' and followed by a '$'.
Serial Port Errors
1 - Invalid, or unknown command given on the serial port.
2 - A command's parameter is out of range.
3 - Syntax error in a command, bad characters, etc.
4 - Bad checksum, this is no longer used.
5 - Wrong number of parameters for command.
6 - The switch is busy and cannot process command.
7 - The command buffer overflowed.
8 - This command is not valid when the switch is turned off.
Hardware Errors
The error codes generated by the ProAudio are fairly generic, and usually the result of
something going wrong on the I2C bus. Some are more useful in finding firmware
problems, than they are for troubleshooting hardware issues. Some errors will cause
other errors.
For instance if you are getting 102 errors (can't talk to the I2C mux), then you will get
103 errors (can't talk to the DSP). If you can't talk to the mux, you will never be able to
talk with the DSP. If you're getting 102 errors, the 103 errors are meaningless.
If the I2C bus is not working, you will pretty much get all the I2C related errors. The
firmware does not stop at the first error, but continues to work with the rest of the board.
So if a single DSP dies, the rest of the zones will continue to work.
This also means if the I2C lines are bad, nothing will work, but you will get an error
message every time the firmware tries to talk to an I2C device. So you will get a lot of
error for a single issue.
100,aaa,bbb - EEPROM updated.
This is not an error, but simply indicates the EEPROM for a TAS3108 has been updated
properly.
For the smaller single board switches:
aaa = The DSP (TAS3108) updated.
bbb = Nothing
For the larger switches:
aaa = The bank of the DSP (which DSP board the TAS3108 is on)
bbb = The DSP updated.
102,aaa,bbb - Could not select a TAS3108 DSP.
An error while attempting to select a DSP using the I2C mux.
If you get this message for every DSP on the board, it probably means there's
something wrong with the I2C lines. Either a line is held high, or low, or missing a pullup
resistor. It could mean there is no power getting to the I2C mux, or some other part,
that's messing with the I2C lines.
aaa = The decimal value of the IC2 address of the MUX.
bbb = The error returned by the I2C routines (see below)
103,aaa,bbb - Could not communicate with a DSP
If there were no 102 errors, but only 103 errors, it indicates the I2C MUX is working, but
after selecting a DSP, the DSP is not responding. If all DSP are doing this, then look at
issues on shared clock lines, like the MCLK, SCLK, BLCK lines. Or the reset lines could
be stuck.
aaa = The output zone that the firmware is trying to control.
bbb = The error returned by the I2C routines (see below)
104,aaa,bbb - Could not select a TPA5050 audio delay IC.
An error while attempting to select an TPA5050 audio delay IC.
aaa = The decimal value of the IC2 address of the MUX.
bbb = The error returned by the I2C routines (see below)
105,aaa,bbb - Could not communicate with a TPA5050
If there were no 104 errors, but only 105 errors, it indicates the I2C MUX is working, but
after selecting a TPA5050, the TPA5050is not responding. If all TPA5050 are doing this,
then look at issues on shared clock lines, like the MCLK, SCLK, BLCK lines.
aaa = The output zone that the firmware is trying to control.
bbb = The error returned by the I2C routines (see below)
107,aaa,bbb - Could not communicate with an EEPROM
The error shows up when trying to update the TAS3108's EEPROM. If there were no
102 errors, but only 106 errors, it indicates the I2C MUX is working, but after selecting
an EEPROM to update, the EEPROM is not responding. Only the larger, multi-board
audio switches of EEPROMs that can be updated.
aaa = The DSP board contain the EEPROM to be updated.
bbb = The error returned by the firmware update routine:
0 - No error, EEPROM not updated.
1 - Updated EEPROM sucessfully.
2 - Could not open file.
3 - Hit EOF while sending data.
4 - EEPROM not found (error reading/writing I2C register).
5 - I2C timeout.
Only 4 & 5 errors are meaningful as a hardware related errors.
108,aaa,bbb - Could not update an EEPROM
This error goes along with the 107 error code, and indicates the EEPROM in error, and
the I2C error, if any.
aaa = The TAS3108 associated with the EEPROM.
bbb = The error returned by the I2C routines (see below)
I2C Errors
There is an overall timer that keeps the I2C lines from locking up. If an I2C line gets
stuck low, the I2C routines can wait indefinitely for the line to go high. If this happens a
background task will timeout and reset the I2C hardware.
If this happens one of the these messages:
I2cSetRead -- Timeout!
I2cSetWrite -- Timeout!
will be printed. If this happens, there's something wrong on the I2C line. A missing
pullup, shorted line, a bad part, etc. Something is causing the I2C lines to lockup.
This can also happen if a single part is bad. The I2C mux will select that part, but if the
part is holding an I2C line low, the firmware can no longer access the I2C mux to point
away from the bad part. The background timer checks for this and resets the I2C
hardware so that the rest of the board can continue working.
Getting timeout errors indicates errors on the I2C lines that the MCU's I2C hardware
cannot work around.
These are the errors that can be returned from the I2C routines:
0 - No error. Everything went fine with the I2C. Except while writing this up I noticed
there's a bug. If the I2C bus is times out (you are getting "Timeout!" errors), the I2C
command will be retried. If the number of retries is exceeded, it returns a '0', it should be
returning a '7'
1 - badly formed command (zero length, etc)
This is a software error, the I2C routine was called with a null pointer, or a zero length
chunk of data.
2 - no address acknowledgment (no device)
The device did not acknowledge. It's acting like the part in question doesn't exist. This
can be a power issue going to the device, or a shorted, or broken, I2C line, or a missing
pullup resistor.
3 - no data acknowledgment (device did not respond)
This would be an unusual error. Since the device acknowledged it's address, but will not
send data. Most likely a firmware bug, asking for the wrong data.
4 - arbitration lost (could be stuck data/clock bit)
There is no arbitration in this design, so this usually indicates an I2C line is shorted to
something.
5 - bus error
The I2C hardware didn't like something, but this is the best it could do in telling you it's
not happy.
6 - Invalid I2C state (unexpected I2C status)
The I2C hardware is not acting properly, it came back with the wrong state, this is a 2 +
2 = 5 kind of error.
7 - I2C routine timed out (could be a stuck clock)
The command took too long. This can happen when the I2C clock line is stuck, like a
short, or missing pullup resistor.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article