Jump to content
InsanelyMac Forum
zuus

ESI Juli@ / Envy 24 with OSX86 - Any progress?

Recommended Posts

Thanks!

 

I also found something like kprintf() which is a kernel debug function which can output to serial, but you have to set some debug bit in the Open Firmware, but I'm not sure we have such thing (or emulation thereof). If that works, kprintf() looks a lot easier, otherwise I'll try your code!

Share this post


Link to post
Share on other sites
Advertisement
Thanks!

 

I also found something like kprintf() which is a kernel debug function which can output to serial, but you have to set some debug bit in the Open Firmware, but I'm not sure we have such thing (or emulation thereof). If that works, kprintf() looks a lot easier, otherwise I'll try your code!

 

Maximum you must build a new kernel...:P Good luck for this project, i thin kprintf() will work

Share this post


Link to post
Share on other sites

Forget about serial. In audio driver you should work in primary interrupt context. If you will block for several milliseconds then you will gen an interrupt look up and crash of the system. You also should not use IOLog from interrupt routine, maybe firewire, but not sure.

 

Also remember about with OS X and multiple DMA mode in Envy24HT. You should use separate DMA buffer for each two channels.

Share this post


Link to post
Share on other sites
Forget about serial. In audio driver you should work in primary interrupt context. If you will block for several milliseconds then you will gen an interrupt look up and crash of the system. You also should not use IOLog from interrupt routine, maybe firewire, but not sure.

 

Also remember about with OS X and multiple DMA mode in Envy24HT. You should use separate DMA buffer for each two channels.

 

Heh, but i need to know if it comes in the interrupt handler at all. Since it hangs after playback, I really need to know this. On other systems I can send strings to a serial line, which helps tremendously. Even if it locks up after that.

Share this post


Link to post
Share on other sites

IOFilterInterruptEventSource should submit 2 callbacks. One which return bool (does interrupt is yours or not) - filter, second callback - handler would be called if filter returns true. So you may print from interrupt handler routine, but not from filter. Anyway, use GDB to analyze crash dumps.

Share this post


Link to post
Share on other sites
IOFilterInterruptEventSource should submit 2 callbacks. One which return bool (does interrupt is yours or not) - filter, second callback - handler would be called if filter returns true. So you may print from interrupt handler routine, but not from filter. Anyway, use GDB to analyze crash dumps.

 

 

Since it freezes, I doubt there is a crash dump somewhere.

I tried again yesterday evening, even trying a registerInterrupt(), but nothing. I generated a sine wave with Audacity and it's surely playing the first part of that sine wave over and over again. So either I'm still doing something wrong, or there is another interrupt handler that doesn't pass the interrupt when it's not his interrupt.

I can try putting the card in another slot to see if that matters. I can also connect a MIDI device and see if it freezes when MIDI bytes are coming in (causing the same interrupt).

Share this post


Link to post
Share on other sites

Ok, learned a couple of things...

I inserted a CMI8738 card in the slot as the Phase22 was and put a Revo5.1 in another PCI slot.

Added IOLog() calls in the CMI8738 driver's interruptFilter() and interruptHandler() routines (I know, I may not do this in the filter). Both of them were printed (of course with a small delay), so for testing it should be 'safe'.

With the CMI card at the slot of the Phase22, it can't be interrupt hijacking either, so, back to debugging I guess...

Share this post


Link to post
Share on other sites

Yes, it's now playing a stereo sample correctly in Audacity. I can stop, play again etc.

 

Now I have to do the boring stuff: add volume controls, make sure it can be unloaded, deal with multi-channel settings per sound card model etc.

Share this post


Link to post
Share on other sites

2 Audiodriverwriter

 

Wow!!! Very good news about driver! :)

 

May be You upload for us a test version of Your work?

 

I think it will be a powerfull test with different soundcards based on ENVY24HT.

Share this post


Link to post
Share on other sites
2 Audiodriverwriter

 

Wow!!! Very good news about driver! :)

 

May be You upload for us a test version of Your work?

 

I think it will be a powerfull test with different soundcards based on ENVY24HT.

 

 

Thanks!

There are currently two problems preventing that:

1) reading of the eeprom where the exact model is stored (for example, m-audio revo 5.1, 7.1, julia) can sometimes give incorrect results. That can result in a freeze.

2) for some reason, loading the driver/.kext twice results in that performAudioEngineStart() is not called the 2nd time. When booting normally, it seems to always load the driver twice, so you don't hear a thing. I always boot in safe mode to prevent this.

 

I'd love to share it with you, but right now that would cause too much complaints or disappointment. Tonight I'll continue my work on the driver.

Share this post


Link to post
Share on other sites

I have an ESI1010, and really wanted to test out logic on my hackintosh which i JUST got working!

 

I also, very smartly, installed the mac driver for the card and nuked my osx.

 

It's constantly asking me to restart during boot!!! Like a window pops up and asks me to restart!

 

Trying safe mode, looks like audio wont work :-(

 

I'm really praying for your success audiodriverwriter! Crazy stuff you're doing here!

 

edit: Mac started up in safe mode. Moved "ESI Settings" to trash. I'm a bit new to a mac. Not booting normally. Need to reinstall :-( First time!

 

But damned lame about audio drivers! Damn!

Share this post


Link to post
Share on other sites

2 greyanaroth

 

Read forums cearefully  :(

 

IMac's dosn't have any PCI slots. MacPro has only PCI-e slots. Our soundcards can't work natively on this computers. The oficial drivers for this cards are PPC Mac version. Of course they crashes Your Hackintosh. 

 

Delete manualy ESI kext, which was installed in . /System/Library/Extensions

 

Make it in single user mode (boot with  -s  flag).

Share this post


Link to post
Share on other sites
2 Audiodriverwriter

 

I can read a dump of eeprom, If You need it for this work. I have Revo 5.1

 

 

Hi,

 

I actually need working code to read the eeprom. Actually, my code worked on the AmigaOne computer I wrote this driver for as well, but there seems to be a timing issue of some sort.

So, I'm not sure if you have what I need, since if you do, you would have an Envy24HT driver already! :D

Edit: reading the eeprom twice results in the correct bytes, funny.

 

@greyanaroth

 

Please read my previous posts on which cards I will support. ESI1010 is not one of them. It is perhaps possible to add support later, but I usually need the physical device here, otherwise development is real hard. Oh, and Envy24HT is not the same as the Envy24 (I'll add support for some Envy24 cards when I finish the HT one).

Share this post


Link to post
Share on other sites

2 Audiodriverwriter

 

I'm sorry, My English is very poor.

 

My friend has a IC-programmator. With it I can read a dump of eeprom and save as file.

 

You need this dump. Am I right?

Share this post


Link to post
Share on other sites
2 Audiodriverwriter

 

I'm sorry, My English is very poor.

 

My friend has a IC-programmator. With it I can read a dump of eeprom and save as file.

 

You need this dump. Am I right?

 

No need to be sorry, I am bad at explaining! ;)

No, I don't need the dump. I know exactly what's in the eeprom. It's just that I need to read the eeprom from code using the Envy's I2C lines, since the first 4 bytes contain the exact model ID. Depending on the model ID, I initialize specific codecs and controls for that model alone. But it seems to be reliable now when I read it twice.

 

But thanks for trying to help anyway, I appreciate it!

Share this post


Link to post
Share on other sites

Thanks!

I chased a hair-pulling bug for two days. It turned out that performFormatChange() could be called with a NULL pointer for the sample rate, bah!

Anyway, with that fixed, I can now configure the device for all 15 sample rates and more important, continue my work! ;)

Share this post


Link to post
Share on other sites
audiodriverwriter

 

I have envy24ht-based audiotrak maya44 mkII and can help you as tester or join your development.

 

Thanks, but maya44 (either mk version) will not be supported initially. I'll see what I can do after I have released the Envy24HT and Envy24 driver for the cards that I own or have owned.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×