This document originally from... http://www.heyrick.co.uk/ricksworld/digibox/sl65f.html |
Ewen found for me the proper Silvercrest website which had tools for the Silvercrest version of the SL-65. Thanks Ewen!
Great! AliEditor connected to my receiver, so I could now back up the firmware, and be able to look at the channel listings.
It was a good idea, and might have worked had the dopey software not decided upon creating a zero-length dump. Lovely!
The available commands (looking in the firmware dump) appear to be:
address
b
burn
c
comtest
dump
move
reboot
transfer
transferraw
version
Data read from the receiver is marked in light blue.
Data written to the receiver is marked in light read.
It appears that the receiver may echo some stuff.
The leftmost column describes the operation.
The next column shows the data in a cooked ASCII form.
The right column shows the data in hex, with 0x prefix so you know.
Set buffer | RxSize: 4096 TxSize: 0 | |
Set state | Flags: fff Baud: 115200 Bits: 8 Stop: 1 Parity: Even | |
Set buffer | RxSize: 10000 TxSize: 10000 | |
Write byte | c | 0x63 |
Read byte | c | 0x63 |
Write byte | o | 0x6F |
Read byte | o | 0x6F |
Write byte | m | 0x6D |
Read byte | m | 0x6D |
Write byte | t | 0x74 |
Read byte | t | 0x74 |
Write byte | e | 0x65 |
Read byte | e | 0x65 |
Write byte | s | 0x73 |
Read byte | s | 0x73 |
Write byte | t | 0x74 |
Read byte | t | 0x74 |
Write byte | | 0x20 |
Write byte | . | 0x0D |
Write byte | c | 0x63 |
Write byte | . | 0x0D |
Read 14 bytes | APP init ok.. | 0x41 50 50 20 20 69 6E 69 74 20 6F 6B 0D 0A |
Write byte | c | 0x63 |
Write byte | . | 0x0D |
Write byte | c | 0x63 |
Read byte | . | 0x0A |
Write byte | . | 0x0D |
Read 11 bytes | >:..>:c..>: | 0x3E 3A 0D 0A 3E 3A 63 0D 0A 3E 3A |
Write byte | c | 0x63 |
Read byte | c | 0x63 |
Write byte | o | 0x6F |
Read byte | o | 0x6F |
Write byte | m | 0x6D |
Read byte | m | 0x6D |
Write byte | t | 0x74 |
Read byte | t | 0x74 |
Write byte | e | 0x65 |
Read byte | e | 0x65 |
Write byte | s | 0x73 |
Read byte | s | 0x73 |
Write byte | t | 0x74 |
Read byte | t | 0x74 |
Write byte | | 0x20 |
Read byte | | 0x20 |
Write byte | 1 | 0x31 |
Read byte | 1 | 0x31 |
Write byte | 0 | 0x30 |
Read byte | 0 | 0x30 |
Write byte | . | 0x0D |
Read byte | . | 0x0D |
Write byte | a | 0x61 |
Read byte | a | 0x61 |
Write byte | l | 0x6C |
Read byte | l | 0x6C |
Write byte | i | 0x69 |
Read byte | i | 0x69 |
Write byte | | 0x20 |
Read byte | | 0x20 |
Write byte | | 0x20 |
Read byte | | 0x20 |
Write byte | D | 0x44 |
Read byte | D | 0x44 |
Write byte | V | 0x56 |
Read byte | V | 0x56 |
Write byte | B | 0x42 |
Read byte | B | 0x42 |
Write byte | - | 0x2D |
Read byte | - | 0x2D |
Write byte | S | 0x53 |
Read byte | S | 0x53 |
Read 3 bytes | .>: | 0x0A 3E 3A |
Write byte | d | 0x64 |
Read byte | d | 0x64 |
Write byte | u | 0x75 |
Read byte | u | 0x75 |
Write byte | m | 0x6D |
Read byte | m | 0x6D |
Write byte | p | 0x70 |
Read byte | p | 0x70 |
Write byte | . | 0x0D |
Read byte | . | 0x0D |
Read 4 bytes | . .. | 0x00 20 00 00 |
Write byte | O | 0x4F |
Read byte | ã | 0xE3 |
Read byte | . | 0x00 |
Read byte | . | 0x00 |
Read byte | . | 0x10 |
Read byte | . | 0x00 |
Read byte | . | 0x00 |
Read byte | . | 0x00 |
Read byte | . | 0x00 |
Read byte | . | 0x00 |
Read byte | . | 0x01 |
Read byte | . | 0x00 |
Read byte | . | 0x00 |
Read byte | N | 0x4E |
Read byte | C | 0x43 |
Read byte | R | 0x52 |
Read byte | C | 0x43 |
Read byte | b | 0x62 |
Read byte | o | 0x6F |
Read byte | o | 0x6F |
Read byte | t | 0x74 |
Read byte | l | 0x6C |
Read byte | o | 0x6F |
Read byte | a | 0x61 |
Read byte | d | 0x64 |
Read byte | e | 0x65 |
Read byte | r | 0x72 |
Read byte | . | 0x00 |
Read byte | . | 0x00 |
Read byte | . | 0x00 |
Read byte | . | 0x00 |
Read byte | Dump continues... |
It appears that we begin the process by outputting:
comtest [0D]c[0D]
to a serial port running at 115,200bps with the protocol of 8 data bits, 1 stop bit, even parity - usually abbreviated to "115200 8E1". Note - 8E1, not 8N1.
Just in case clarification is required - the values in square brackets that are italicised (for example
The receiver would appear to echo the "comtest" but not the final four bytes.
The receiver will reply with:
APP init ok[0D][0A]
We then output:
c[0D]c[0A][0D]
Note that the CRLF sequence is reversed.
The receiver then replies with:
>:[[0A][0D]>:c[0A][0D]>:
Again, note that the CRLF sequences are reversed.
At this point, the front panel LEDs will say
We now send the command:
comtest 10[0D]ali DVB-S
to which the receiver replies with a command-line of sorts:
[0A]>:
At this point, the front panel LEDs will say
We send the command:
dump[0D]
The receiver replies with four bytes:
[00][20][00][00]
In little-endian (Motorola/ARM) byte ordering, this equates to "1<<16" which is 2,097,152 - or two megabytes. This is probably the size of the dump that is to be returned.
At this point, the front panel LEDs will say
We then output:
O
(upper case 'o', perhaps for "ok"?)
The receiver will then reply with loads of data. A complete dump of the 2Mb FlashROM.
It appears that there is no official 'finish' to the transfer, and that the receiver appears to blindly spit data out its serial port paying scant regard to RTS/CTS handshaking. If you don't catch all the data in time, stuff gets missed.
I have my suspicions that AliEditor may be abandoning the transfer due to the speed of the serial link. Let's put it like this - I regularly transfer files to/from my RiscPC at 115,200bps using HyperTerm and HearSay2. Sending to the 40MHz ARM is no trouble whatsoever - the RiscPC can more than keep up.
Returning data (from the 40MHz RiscPC) to the 466MHz Celeron PC results in numerous retries and communications errors. It will work, as Zmodem is robust, but it appears the PC frequently loses bytes.
Now, I know you cannot compare clock speeds of a RISC and a CISC processor, and I know one is running a hand-crafted assembler operating system and the other Windows... but whichever way you slice the cake, the brute speed of the PC is eleven times faster, not to mention a memory subsystem probably clocking around 66MHz (instead of the RiscPC's 12MHz bottleneck).
Anyway, the point isn't to slag off the x86's interrupt latency or Windows serial port handling, the point is to try to come up with reasons why AliEditor is not working for me - as surely if it simply does not work, somebody at Silvercrest might have noticed by now!