ProAudio Error Codes

Modified on Wed, 28 Jan at 3:52 PM

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

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article