Hijack v450: enable playback with dead cs4231a

Posted by: mlord

Hijack v450: enable playback with dead cs4231a - 21/03/2006 23:06

Hijack v450 is now available, as is v449.

New in v449: allow button names to be used with extmute_on= and extmute_off= options.

New in v450: enable empeg to be used for digital playback (mp3, ogg, wav, ..) even when the cs4231a chip is dead.

That chip is only used for analog inputs, so this version of hijack forces the player into digital playback mode when it detects a dead cs4231a chip. It also intercepts the button codes for switching to analog inputs and ignores them. So no Tuner, no Aux, but the rest still works.

There's probably a loophole in there somewhere (eg. attempting to use the microphone..), but it works for me.

Cheers
Posted by: matthew_k

Re: Hijack v450: enable playback with dead cs4231a - 21/03/2006 23:25

Quote:
New in v449: allow button names to be used with extmute_on= and extmute_off= options.

Ah, I've always had the extmute buttons trigger a made up button code and then ir_translated that to what I wanted. I never knew why it had to be that way, but it worked. (Still) Looking forward to playing with this.

Matthew
Posted by: tfabris

Re: Hijack v450: enable playback with dead cs4231a - 21/03/2006 23:34

Wow, what a fantastic feature! You are THE MAN.
Posted by: tman

Re: Hijack v450: enable playback with dead cs4231a - 22/03/2006 00:29

The CS4231A is just used to sample the tuner/aux audio for the visualisations isn't it? I wonder how much work it would be to just fake the presence of the CS4231A and return 0 samples instead of disabling the tuner/aux.
Posted by: mlord

Re: Hijack v450: enable playback with dead cs4231a - 22/03/2006 01:31

Quote:
The CS4231A is just used to sample the tuner/aux audio for the visualisations isn't it? I wonder how much work it would be to just fake the presence of the CS4231A and return 0 samples instead of disabling the tuner/aux.


Yeah, I'm considering trying that. Easy enough to implement, but I don't know exactly what depends upon a real chip there. Other than the visuals for the analog sources.

Cheers
Posted by: Gleep

Re: Hijack v450: enable playback with dead cs4231a - 22/03/2006 01:37

Quote:
New in v450: enable empeg to be used for digital playback (mp3, ogg, wav, ..) even when the cs4231a chip is dead.


Can someone explain in English what this feature is?
Posted by: mlord

Re: Hijack v450: enable playback with dead cs4231a - 22/03/2006 01:56

Quote:
Quote:
New in v450: enable empeg to be used for digital playback (mp3, ogg, wav, ..) even when the cs4231a chip is dead.


Can someone explain in English what this feature is?


Sure. A modestly common hardware failure in the Empeg/RioCar units, is for a big chip called the cs4231a to die (permanently stops functioning). This is extremely difficult to fix, and when attempted has a less than 50% success rate.

Usually, the death of that chip means the end of the player, or expensive repairs.

Hijack v450 simply tries to allow the player to continue functioning even with that dead chip, at least for the stuff that doesn't actually use the chip. This only works when the dead chip isn't interfering with other hardware.

Cheers
Posted by: Gleep

Re: Hijack v450: enable playback with dead cs4231a - 22/03/2006 12:03

Thanks Mark

That is one feature I hope I never need.
Posted by: Snowshoe

Re: Hijack v450: enable playback with dead cs4231a - 22/03/2006 21:04

So the only thing that would play, if that chip died & you use this feature, are the mp3's, right?

Quote:
forces the player into digital playback mode

That sounds better than the original setup (analog), with the exception of losing the tuner/aux functions, why not do it all the time, I know I'm missing something here.
Posted by: wfaulk

Re: Hijack v450: enable playback with dead cs4231a - 22/03/2006 21:26

Quote:
That sounds better than the original setup

You mean the way the empeg has worked all along?

I have a feeling that the point you're missing is that, when playing mp3s (or wavs or wmas or oggs or flacs), the empeg is in digital playback mode. It only uses the analog mode when using the tuner or the aux, where it has no digital audio path.
Posted by: matthew_k

Re: Hijack v450: enable playback with dead cs4231a - 22/03/2006 21:27

It always plays mp3's "digitally". It always gets the aux/tuner from analog. No getting around that. This just lets you use the mp3's when the analog portion is fried.

Matthew
Posted by: genixia

Re: Hijack v450: enable playback with dead cs4231a - 23/03/2006 03:39

And to clarify further - it only uses this particular chip to do the visuals. The audio is still handled by the dsp.
Posted by: gbeer

Re: Hijack v450: enable playback with dead cs4231a - 23/03/2006 03:55

Quote:
And to clarify further - it only uses this particular chip to do the visuals. The audio is still handled by the dsp.


Ok, I'll bite. Why is that chip needed for the visuals?
Posted by: matthew_k

Re: Hijack v450: enable playback with dead cs4231a - 23/03/2006 04:16

It samples the audio for the CPU. The CPU tells the DSP what to do, but it does it all by itself without sending the audio through the CPU. So when the CPU wants to know what's going on with the audio, it has to sample it for itself.

Matthew
Posted by: FireFox31

Re: Hijack v450: enable playback with dead cs4231a - 26/03/2006 21:56

Geez, in the next year or so, we'll have this whole thing reverse engineered. Good work Mark!
Posted by: maczrool

Re: Hijack v450: enable playback with dead cs4231a - 11/12/2006 12:47

Quote:
Hijack v450 is now available, as is v449.

New in v450: enable empeg to be used for digital playback (mp3, ogg, wav, ..) even when the cs4231a chip is dead.

That chip is only used for analog inputs, so this version of hijack forces the player into digital playback mode when it detects a dead cs4231a chip. It also intercepts the button codes for switching to analog inputs and ignores them. So no Tuner, no Aux, but the rest still works.

There's probably a loophole in there somewhere (eg. attempting to use the microphone..), but it works for me.

Cheers


I assume this feature is automatic? I've got a unit that does not recognize any hard drive no matter what cable is used and even with a resoldered header. The only thing I see from the boot log is that the CS4231 was not found. Would this cause the HD's to be totally ignored though? I've got the latest Hijack installed but that didn't help it.

Stu
Posted by: mlord

Re: Hijack v450: enable playback with dead cs4231a - 11/12/2006 15:14

Versions of Hijack prior to v459 may not include the "complete" fix for this, so ensure you're using the latest (v464 right now).

With Hijack >= v459, the fix is automatic. If the cs4231a is dead, Hijack will notice and automatically try to work around the fault. This may or may not succeed, depending on the actual state of the dead chip.

It usually works, but once in a while the dead chip (1) may be driving some pins regardless, preventing use of the peripheral bus, or (2) might be the ethernet chip instead of the cs4231a.

Cheers
Posted by: maczrool

Re: Hijack v450: enable playback with dead cs4231a - 11/12/2006 15:52

Quote:
Versions of Hijack prior to v459 may not include the "complete" fix for this, so ensure you're using the latest (v464 right now).

With Hijack >= v459, the fix is automatic. If the cs4231a is dead, Hijack will notice and automatically try to work around the fault. This may or may not succeed, depending on the actual state of the dead chip.

It usually works, but once in a while the dead chip (1) may be driving some pins regardless, preventing use of the peripheral bus, or (2) might be the ethernet chip instead of the cs4231a.

Cheers


It's got Hijack 464. So you are saying it is possible for the ethernet chip or CS4231 to completely lock up the IDE bus? In the past it was usually a single stuck bit on the ethernet chip and at least the HDs were recognized.

Stu
Posted by: mlord

Re: Hijack v450: enable playback with dead cs4231a - 11/12/2006 17:16

Quote:
t it was usually a single stuck bit on the ethernet chip


That (above) is an example of "locking up the bus". IDE won't work with breakage like that.

Cheers
Posted by: maczrool

Re: Hijack v450: enable playback with dead cs4231a - 11/12/2006 17:57

Sure, but in this case it's something more difficult to troubleshoot because we can't even see if there is a stuck bit.

Could this possibly be a problem with the addressing bits?

Stu
Posted by: mlord

Re: Hijack v450: enable playback with dead cs4231a - 11/12/2006 18:20

Anything is possible. But it is kinda difficult to comment here, as you have yet to provide *any* information (hint: boot log?).

Cheers
Posted by: maczrool

Re: Hijack v450: enable playback with dead cs4231a - 11/12/2006 18:53

It was attached a few posts up, but here it is inline.


empeg-car bootstrap v1.02 20001106 (hugo@empeg.com)
If there is anyone present who wants to upgrade the flash, let them speak now,
or forever hold their peace...it seems not. Let fly the Penguins of Linux!

e000 v1.04
Copying kernel...
Calling linux kernel...
Uncompressing Linux..................................... done, booting the kernel.

Linux version 2.2.14-rmk5-np17-empeg52 (rob@aphex) (gcc version 2.95.3 20010315 (release)) #11 Tue Apr 1 18:49:59 BST 2003

Processor: Intel StrongARM-1100 revision 11

NetWinder Floating Point Emulator V0.94.1 (c) 1998 Corel Computer Corp.

empeg-car player (hardware revision 9, serial number 40103200)

Command line: mem=16m

Calibrating delay loop... 207.67 BogoMIPS

Memory: 15024k/16M available (964k code, 20k reserved, 372k data, 4k init)

Dentry hash table entries: 2048 (order 2, 16k)

Buffer cache hash table entries: 16384 (order 4, 64k)

Page cache hash table entries: 4096 (order 2, 16k)

POSIX conformance testing by UNIFIX

Linux NET4.0 for Linux 2.2

Based upon Swansea University Computer Society NET3.039


NET4: Linux TCP/IP 1.0 for NET4.0

IP Protocols: ICMP, UDP, TCP

TCP: Hash tables configured (ehash 16384 bhash 16384)

IrDA (tm) Protocols for Linux-2.2 (Dag Brattli)

Linux-IrDA: IrCOMM protocol ( revision:Tue May 18 03:11:39 1999 )

ircomm_tty: virtual tty driver for IrCOMM ( revision:Wed May 26 00:49:11 1999 )

Starting kswapd v 1.5

SA1100 serial driver version 4.27 with no serial options enabled

ttyS00 at 0xf8010000 (irq = 15) is a SA1100 UART

ttyS01 at 0xf8050000 (irq = 17) is a SA1100 UART

ttyS02 at 0xf8030000 (irq = 16) is a SA1100 UART

Signature is 20706d65 'emp '

empeg display initialised.

empeg dsp audio initialised

empeg dsp mixer initialised

empeg dsp initialised

Could not find CS4231A (version=80)

empeg remote control/panel button initialised.

empeg usb initialised, PDIUSBD12 id 1012

empeg state support initialised 0089/88c1 (save to d0005600).

empeg RDS driver initialised

empeg power-pic driver initialised (first boot)

RAM disk driver initialized: 16 RAM disks of 4096K size

empeg single channel IDE

Probing primary interface...

Probing primary interface...

empeg-flash driver initialized

smc chip id/revision 0x1b49

smc_init couldn't find card

RAMDISK: ext2 filesystem found at block 0

RAMDISK: Loading 320 blocks [1 disk] into ram disk...

done.

VFS: Mounted root (ext2 filesystem).

empeg-pump v0.03 (19980601)
Press Ctrl-A to enter pump... VFS: Cannot open root device 03:05

Kernel panic: VFS: Unable to mount root fs on 03:05
Posted by: mlord

Re: Hijack v450: enable playback with dead cs4231a - 11/12/2006 19:08

Quote:
It was attached a few posts up, but here it is inline.


Ah, I missed that one. But how about a log with *Hijack* installed ?

Thanks
Posted by: mlord

Re: Hijack v450: enable playback with dead cs4231a - 11/12/2006 19:11

From the non-Hijack log, it looks like data bit D5 is stuck low, probably due to the ethernet chip. But it would still be good to see the Hijack trace, with no drives installed.

Cheers
Posted by: maczrool

Re: Hijack v450: enable playback with dead cs4231a - 11/12/2006 19:47

.D'oh! I thought Hijack was installed when I pulled the boot log, but apparently not! I didn't realize Hijack's IDE testing worked without the drives installed. Bootlog attached.
Posted by: mlord

Re: Hijack v450: enable playback with dead cs4231a - 11/12/2006 23:39

Yeah, probably D5 at the ethernet chip (counting from D0). Perhaps try lifting that one pin, and see if the rest of it comes back to life.

Cheers
Posted by: maczrool

Re: Hijack v450: enable playback with dead cs4231a - 12/12/2006 20:16

Okay, it was D5 as it has been before if I recall. How is it you can infer the fault of a single bit from a series of mismatches in the IDE test? 0xffff ----> 0xffdf and 0x5555 ----> 0xff55 imply several bits are off do they not?

In any case, thanks again for your help.
Stu
Posted by: mlord

Re: Hijack v450: enable playback with dead cs4231a - 12/12/2006 21:18

Quote:
How is it you can infer the fault of a single bit from a series of mismatches in the IDE test? 0xffff ----> 0xffdf and 0x5555 ----> 0xff55 imply several bits are off do they not?



Heh.. Well, in an ideal world, the bus should read back all ffff's with no drives connected. But in practice, since it is basically tristated, the bus is floating. So the value we write tends to take a while to "fade away" again, before we see ffff.

The test we're doing isn't patient enough to wait for the bus to float back to ffff after we write, so we have to keep this in mind when evaluating the IDE test output with any value other than ffff being written.

But for the case of writing ffff, and then reading it back, we really should see ffff on the readback, most of the time. And that's the giveaway here: it consistently gave us this:

ide_data_test: wrote 0xffff read 0xffdf

So bit D5 appears to be stuck low (zero).

To validate this, then look at the rest of the trace, and verify that D5 is *never* anything other than a zero. Now double-check it against the CS4231A test earlier on, where we read 80 rather than the normal A0 value. Again, D5 is stuck low.

Cheers!