As can be seen from the -fix file, URBs 57 to 78, the second value returned
from the C500 command is an error code, where zero is normal and anything
else is an error. After an error you can do a read command on 0300 which
returns three bytes which, presumably, give more details...

To warm up the lamp, the system writes 01 to command 0000. When it succeeds
it continues. The error from the C500 is 02. The 0300 returns 0B 80 01.

To send the 2500 for the scan paramters is not sufficient to trigger a scan.
You need to send a 1B05 command before and a 1B01 afterwards. What you send
is either a 0x40 or a 0x00. It seems to be mostly 0x40 except for that
calibration scan where it is 0x00. This is the scan that seems to return
48bpp.

There appears to be some kind of gamma correction table written using the
2Axx commands. There are three 2A01, 2A02 and 2A03 presumably for red, green
and blue. Each of these takes a 128KiB transfer as input (the figure
0x020000 is given with the command). It doesn't appear to need to enable the
table, there is no command between the upload and the next scan. Prior to
these tables there is another table uploaded with command E603 (size 32792
bytes). The 0x8018 is given with the command. The remaining bytes are of
unknown meaning.
