Michiel Konstapel writes:
> > There's one thing you could try, but it's a wild guess really. In
> > fet.c,
> > find line 858, which looks like this:
> >
> > .min_version = 20404000,
> >
> > Change it to:
> >
> > .min_version = 20401004,
> >
> > You should get some line in the output about sending magic messages.
> > Some of the new versions of the firmware require a pair of large init
> > messages to be sent before they'll work properly.
>
> Nope, that didn't work, but it seems it already bails out earlier. In
> fet_open:
>
> /* set VCC */
> if (xfer(dev, C_VCC, NULL, 0, 1, vcc_mv) < 0) {
> fprintf(stderr, "fet: set VCC failed\n");
> goto fail;
> }
>
> printf("Set Vcc: %d mV\n", vcc_mv);
>
> /* Identify the chip */
> if (do_identify(dev) < 0) {
> fprintf(stderr, "fet: identify failed\n");
> goto fail;
> }
>
> /* Send the magic required by RF2500 and Chronos FETs */
> if (do_magic(dev) < 0) {
> fprintf(stderr, "fet: init magic failed\n");
> goto fail;
> }
>
> I think it's already failing in do_identify:
>
> if (xfer(dev, 0x28, NULL, 0, 2, 0, 0) < 0) {
> fprintf(stderr, "fet: command 0x28 failed\n");
> return -1;
> }
>
> so it never gets to do_magic, if I'm reading this correctly.
Yep, you're right.
Here's another wild guess... find line 528 in do_identify():
if (dev->version < 20300000) {
...and change the version number to 20404000 (or anything else which is
greater than 20401004).
Older versions of the firmware return a device name string, and newer
versions won't. I just don't know how new exactly.
- Daniel