Jump to content
About Just Joined group Read more... ×
ITzTravelInTime

Kx audio driver mod [Sound blaster live!, audigy 1/2/4/RX emu edsp]

483 posts in this topic

Recommended Posts

KX AUDIO DRIVER MOD

 

Hi guys i am a small developer, i really like to use my sound blaster cards on my machines and i love also coding, so when i find the source code for the kx audio driver on git hub and then Eugene, the creator of kx audio driver decided to no longer maintain the project, i decided to start working on a mod of this driver and maintain it. 

 

With my mod, created starting from the sources of the last official version of kx audio driver and all the small commiunity updates, i am working to keep the driver compatible with the latest mac os versions and to improove the driver over time.

 

Supported cards are:

 

 - most of the Sound Blaster live!, live! 5.1 and live! 5.1 digital series (except for the cards not using the 10k1 architecture)

 - sound blaster pci 512 and pci 256

 - Sound Blaster Audigy, Audigy 2 and Audigy 2 zs series

 - E-MU cards based on the 10k2 sound chip (like the EMU8852 aka 0404m, including the pcie version)

 - Sound Blaster Audigy 4 (SB0610 only) and the Audigy 4 pro

 - Sound Blaster Audigy RX (SB0155)

 - other creative and e-mu cards based on the (10k1,10k2, 10k2.5 and CA10300 based cards)

 

The NOT supported cards includes (but are not limited to):

 

 - ES1370/ES1371/ES1372/ES1373 based sound cards

 - Any CA0106 based card and cards with similar architectures (like sound blaster live! 24 bit, sound blaster audigy SE SB0570, audigy LS and similars, but audigy SA is supported)

 - Any sound blaster x-fi (some of them works on macOS using a modified version of voodoo hda)

 - Any sound blaster recon3D

 - Sound blaster Audigy FX

 - Any sound blaster Z/ZS/ZX and similar series

 - Any sound blaster AE5/AE7/AE9 series

 - Any sound card without an emu sound chip

- Any ISA Sound card

 

In the time being the things i have modded or added with this mod are:

 

- cracking and stability fixes

 

- added a more proper support for the pci express Sound Blaster audigy rx SB0155 (which basically is an audigy 4 with a pcie bridge chip) 

 

- more user-frienly names for the cards in the settings and other system menus (so the name will be, for example, SB live! 5.1 SB0060 instead of kx SB0060 [e880] witch was shown in the original driver)

 

- added support to sample rate changing and bit resolution change (the absolte worst supported quality is 7 khz at 8 bit dept while the absolute best is 192 khz at 32 bit depth)

 

- inputs support

 

- added boot args to manage the driver (more info on those soon)

 

What i'd like to implement but i don't know how to do:

 

 - fix the support when using more than one card, to get all the cards shown in the settings and other menus,

 

 - have the gameport/midi port of older cards to be used in mac os as a midi in/out

 

If other developers would like to join and help they are free to do so, this is a free open source project afterall, and also an hand from other people with testing and feedback will be nice.

 

LINKS and downloads:

 
       -  github repo:                                               https://github.com/ITzTravelInTime/kx-audio-driver
 
(kext download coming soon, since an update is coming)
 

DELL181UR.jpg

 

maxresdefault-2.jpg

Creative_Sound_Blaster_Audigy_SB0090.jpg

pdt_21723.png.png

maxresdefault.jpg

29-102-178-06.jpg

Edited by ITzTravelInTime
added new info of the new mod version

Share this post


Link to post
Share on other sites
Advertisement

Just for who wants to see which audio cards will be recognized by the audio driver, i link to you a .cpp code file which is used to recognize the audio cards in the driver, if you have a copy of the latest official sources, you will find the original version into the project folder/driver/frname.cpp, you can not use mine file as replacement for the frname that there is in the official sources because i use some custom properties, methods and variables that needs changes in other parts of the code to work

#include "kx.h"

int kx_get_friendly_name(unsigned int device,unsigned int subsys,unsigned int chiprev,
                         char *tmp_str,
                         unsigned char &is_51,
                         unsigned char &has_surdac,
                         unsigned char &is_aps,
                         unsigned char &is_10k2,
                         unsigned char &is_10k3,
                         unsigned char &is_a2,
                         unsigned char &is_a2ex,
                         unsigned char &is_k8,
                         unsigned char &is_a4,
                         unsigned char &is_edsp,
                         char &have_ac97,
                         char &lack_ac97,
                         unsigned char &is_zsnb,
                         unsigned char &is_cardbus
                         ,CardBus busName);

int kx_get_friendly_name(unsigned int device,unsigned int subsys,unsigned int chiprev,
                         char *tmp_str,
                         unsigned char &is_51,
                         unsigned char &has_surdac,
                         unsigned char &is_aps,
                         unsigned char &is_10k2,
                         unsigned char &is_10k3,
                         unsigned char &is_a2,
                         unsigned char &is_a2ex,
                         unsigned char &is_k8,
                         unsigned char &is_a4,
                         unsigned char &is_edsp,
                         char &have_ac97,
                         char &lack_ac97,
                         unsigned char &is_zsnb,
                         unsigned char &is_cardbus,
                         CardBus busName)
{
    int ret=0;
    busName = PCI;
    lack_ac97=0;
    have_ac97=0; // autodetect
    
    if(device==0x00041102) // 10k2
        is_10k2=1;
    
    if(device==0x00041102 && chiprev==4)  // a2
        is_a2=1;
    
    if(device==0x00081102) // a2value, ... with p17v
    {
        is_10k2=1;
        is_a2=1;
        is_k8=1;
        
        // this is assumed:
        // if((subsys&0xf0000000)==0x10000000) // any ca0108
        // is_k8=1;
        
        if((subsys&0xf0000000)==0x20000000) // any zsnb
            is_cardbus=1;
        
        if((subsys&0xf0000000)==0x40000000) // any e-dsp v2
            is_edsp=1;
        
        if((subsys&0xff000000)==0x42000000) // any e-dsp v2 cardbus
            is_cardbus=1;
    }
    
    if(is_edsp)
        lack_ac97=1;
    
    if(is_10k2)
        is_51=1; // assume 10k2 is always at least '5.1'
    
    switch(subsys)
    {
        case 0x40011102:
            if(is_10k2==0) // [1]
            {
                strncpy(tmp_str,"EMU EMUAPS",KX_MAX_STRING);
                is_aps=1;
                lack_ac97=1;
            }
            else
            {
                strncpy(tmp_str,"EMU EM8810 10k2",KX_MAX_STRING); // [110] - 1010 v1
                is_edsp=1;
                lack_ac97=1;
            }
            break;
            
        case 0x00201102: // [2]
            strncpy(tmp_str,"Sound Blaster live! CT4670 10k1",KX_MAX_STRING); // live! value
            break;
        case 0x00211102: // [3]
            strncpy(tmp_str,"Sound Blaster live! CT4620 10k1",KX_MAX_STRING); // live! standard
            break;
        case 0x80221102: // [4]
            strncpy(tmp_str,"Sound Blaster live! CT4780 10k1",KX_MAX_STRING); // value digital
            break;
        case 0x80231102: // [5]
            strncpy(tmp_str,"Sound Blaster PCI 512 CT4790 10k1",KX_MAX_STRING); // 512
            break;
        case 0x80251102: // sb0040 ? too // [6]
            strncpy(tmp_str,"Sound Blaster live! CT1140 10k1",KX_MAX_STRING); // MB
            break;
        case 0x80261102: // [7]
            strncpy(tmp_str,"Sound Blaster live! CT4830 10k1",KX_MAX_STRING); // value digital
            break;
        case 0x80271102: // [8]
            strncpy(tmp_str,"Sound Blaster live! CT4832 10k1",KX_MAX_STRING); // value digital
            break;
        case 0x80281102: // [9]
            strncpy(tmp_str,"Sound Blaster live! CT4870 10k1",KX_MAX_STRING); // value
            break;
        case 0x80291102: // [10]
            strncpy(tmp_str,"Sound Blaster live! CT4872 10k1",KX_MAX_STRING); // value
            break;
        case 0x802a1102: // [11]
            strncpy(tmp_str,"Sound Blaster live! CT4890 10k1",KX_MAX_STRING); // k256
            break;
        case 0x802b1102: // [12]
            strncpy(tmp_str,"Sound Blaster PCI 256 CT4891 10k1",KX_MAX_STRING); // 256
            break;
        case 0x002F1102: // M002/M003 // [13]
            strncpy(tmp_str,"Sound Blaster live! CTM002 10k1",KX_MAX_STRING); // MB
            break;
        case 0x80311102: // [14]
            strncpy(tmp_str,"Sound Blaster live! CT4831 10k1",KX_MAX_STRING); // value
            break;
        case 0x80321102: // [15]
            strncpy(tmp_str,"Sound Blaster live! CT4871 10k1",KX_MAX_STRING); // value
            break;
        case 0x80331102: // [16]
            strncpy(tmp_str,"Sound Blaster live! CT4893 10k1",KX_MAX_STRING); // k256
            break;
        case 0x80351102: // [17]
            strncpy(tmp_str,"Sound Blaster live! CT0060 10k1",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x80401102: // [18]
            strncpy(tmp_str,"Sound Blaster live! CT4760 10k1",KX_MAX_STRING); // live digital entertainment/platinum
            break;
            
        case 0x80501102: // [19]
            strncpy(tmp_str,"Sound Blaster live! CT4750 10k1",KX_MAX_STRING); // was 4820?! k512
            break;
        case 0x80511102: // [20]
            strncpy(tmp_str,"Sound Blaster live! CT4850 10k1",KX_MAX_STRING);
            break;
            
        case 0x80611102: // [21]
            strncpy(tmp_str,"Sound Blaster live! 5.1 SB0060 10k1",KX_MAX_STRING);  // live 5.1
            is_51=1;
            has_surdac=1;
            break;
        case 0x80621102: // [22]
            strncpy(tmp_str,"Sound Blaster live! 5.1 SB0100 10k1",KX_MAX_STRING);  // live 5.1
            is_51=1;
            has_surdac=1;
            break;
        case 0x80631102: // [23]
            strncpy(tmp_str,"DXW MB",KX_MAX_STRING);
            break;
        case 0x80641102: // [24]
            strncpy(tmp_str,"Sound Blaster live! 5.1 SB0102 10k1",KX_MAX_STRING);  // live 5.1
            is_51=1;
            has_surdac=1;
            break;
        case 0x80651102: // [25]
            strncpy(tmp_str,"Sound Blaster live! 5.1 Digital SB022X 10k1",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x80661102: // [33]
            strncpy(tmp_str,"Sound Blaster live! 5.1 SB0228 10k1",KX_MAX_STRING); // Russ's
            is_51=1;
            has_surdac=1;
            break;
        case 0x100a1102:
            if(!is_10k2)
            {
                if(chiprev==0xa)
                    strncpy(tmp_str,"Sound Blaster live! 5.1 SB0229 10k1",KX_MAX_STRING); // [34] - LS
                else
                    strncpy(tmp_str,"Sound Blaster live! 5.1 SB022b 10k1",KX_MAX_STRING); // [33]
                
                is_51=1;
                has_surdac=1;
            }
            else
            {
                strncpy(tmp_str,"Sound Blaster Audigy 2 SB0246 10k2",KX_MAX_STRING); // Audigy2 gateway oem [88]
            }
            break;
        case 0x80671102: // [32]
            strncpy(tmp_str,"Sound Blaster live! 5.1 Digital SB0220 10k1",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x80681102: // [26]
            strncpy(tmp_str,"Sound Blaster live! 5.1 CT0061 10k1",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x80691102: // [27]
            strncpy(tmp_str,"Sound Blaster live! 5.1 SB0101 10k1",KX_MAX_STRING); // value
            is_51=1;
            has_surdac=1;
            break;
        case 0x806a1102: // [28]
            strncpy(tmp_str,"Sound Blaster live! 5.1 SB0103 10k1",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x806b1102: // [29]
            strncpy(tmp_str,"Sound Blaster live! 5.1 SB0105 10k1",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x806C1102: // [30]
            strncpy(tmp_str,"Sound Blaster live! 5.1 Digital SB0221 10k1",KX_MAX_STRING);
            is_51=1;
            has_surdac=1;
            break;
        case 0x80711102: // [31]
            strncpy(tmp_str,"Sound Blaster PCI 512 SB0150 10k1",KX_MAX_STRING); // PCI512
            is_51=1;
            has_surdac=1;
            break;
            
        case 0x00401102: // ?.. dead audigy [50]
            strncpy(tmp_str,"Sound Blaster SB0090 10k2",KX_MAX_STRING); // audigy
            break;
        case 0x00411102:
            strncpy(tmp_str,"Sound Blaster CT4820 10k2",KX_MAX_STRING); // [51]
            break;
        case 0x00421102:
            strncpy(tmp_str,"Sound Blaster CT0070 10k2",KX_MAX_STRING); // [52]
            break;
        case 0x00431102:
            strncpy(tmp_str,"Sound Blaster CT0072 10k2",KX_MAX_STRING); // ct0073? // [53]
            break;
        case 0x00511102: // [54]
            strncpy(tmp_str,"Sound Blaster Audigy SB0090 10k2",KX_MAX_STRING); // audigy with golden connectors
            break;
        case 0x00521102: // [55]
            strncpy(tmp_str,"Sound Blaster Audigy SB016X 10k2 CA0100",KX_MAX_STRING); // audigy: plastic + gameport (no 1394)
            // unknown: sb0162 -- audigy w/midi jack + plastic jacks
            break;
        case 0x00531102: // [56]
            strncpy(tmp_str,"Sound Blaster Audigy SB0092 10k2",KX_MAX_STRING); // audigy OEM / Player SB0092
            break;
        case 0x00541102: // [57]
            strncpy(tmp_str,"Sound Blaster Audigy SB0161 10k2 CA0100",KX_MAX_STRING); // audigy
            break;
        case 0x00551102: // [58]
            strncpy(tmp_str,"Sound Blaster Audigy SB0192 10k2",KX_MAX_STRING); // audigy
            break;
        case 0x00561102: // [59]
            strncpy(tmp_str,"Sound Blaster Audigy SB0191 10k2",KX_MAX_STRING); // audigy
            break;
        case 0x00571102: // [60]
            strncpy(tmp_str,"Sound Blaster Audigy (OEM) SB0091 10k2",KX_MAX_STRING); // audigy
            break;
        case 0x00581102: // [61]
            strncpy(tmp_str,"Sound Blaster Audigy (OEM) SB0095 10k2",KX_MAX_STRING); // audigy
            break;
        case 0x00591102: // [62]
            strncpy(tmp_str,"Sound Blaster Audigy SB0230 10k2",KX_MAX_STRING); // audigy
            break;
        case 0x005A1102: // [63]
            strncpy(tmp_str,"Sound Blaster Audigy SB0231 10k2",KX_MAX_STRING); // audigy
            break;
        case 0x005B1102: // [64]
            strncpy(tmp_str,"Sound Blaster Audigy SB0232 10k2",KX_MAX_STRING); // audigy
            break;
        case 0x005C1102: // [65]
            strncpy(tmp_str,"Sound Blaster Audigy SB0238 10k2",KX_MAX_STRING); // audigy
            break;
            
        case 0x10021102: // [80]
            strncpy(tmp_str,"Sound Blaster Audigy 2 SB0240 10k2",KX_MAX_STRING); // Audigy2
            break;
        case 0x10031102: // [81]
            strncpy(tmp_str,"Sound Blaster Audigy 2 SB0243 10k2",KX_MAX_STRING); // Audigy2
            break;
        case 0x10041102: // [82]
            strncpy(tmp_str,"Sound Blaster Audigy 2 SB0242 10k2",KX_MAX_STRING); // Audigy2
            break;
        case 0x10051102: // [83]
            strncpy(tmp_str,"Sound Blaster Audigy 2 Platinum EX SB0280 10k2",KX_MAX_STRING); // Audigy2 Platinum Ex; sb244, sb250, sb290
            is_a2ex=1;
            lack_ac97=1;
            break;
        case 0x10061102: // [86]
            strncpy(tmp_str,"Sound Blaster Audigy 2 (OEM) SB0245 10k2",KX_MAX_STRING); // audigy2 gateway oem
            break;
        case 0x10071102: // [84]
            strncpy(tmp_str,"Sound Blaster Audigy 2 (OEM) SB0244 10k2",KX_MAX_STRING); // audigy2 oem [riva's]
            break;
        case 0x10081102: // [85]
            strncpy(tmp_str,"Sound Blaster Audigy 2 Platinum EX SB0320 10k2",KX_MAX_STRING); // Audigy2 Platinum Ex (with ac97 codec!) + sb290
            is_a2ex=1;
            break;
        case 0x10091102: // [87]
            strncpy(tmp_str,"Sound Blaster Audigy 2 SB0249 10k2",KX_MAX_STRING); // Audigy2 unk
            break;
            
        case 0x20011102: // [101]
            if(is_k8)
            {
                strncpy(tmp_str,"Sound Blaster Audigy 2 ZS Mobile SB0530 10k8",KX_MAX_STRING); // audigy2 ZS Notebook
                is_zsnb=1;
                is_cardbus=1;
                lack_ac97=1;
                busName = NoteBook;
            }
            else // [90]
            {
                strncpy(tmp_str,"Sound Blaster Audigy 2 ZS Platium Pro SB0360 10k2",KX_MAX_STRING); // audigy2 ZS Platinum Pro + sb290
                is_a2ex=1;
            }
            break;
        case 0x20211102: // [105]
            if(is_k8)
            {
                strncpy(tmp_str,"Sound Blaster Audigy 2 ZS Mobile SB2021 10k8",KX_MAX_STRING); // audigy2 zs notebook [?]
                is_zsnb=1;
                is_cardbus=1;
                lack_ac97=1;
                busName = NoteBook;
            }
            break;
        case 0x20021102: // [91]
            strncpy(tmp_str,"Sound Blaster Audigy 2 ZS SB0350 10k2",KX_MAX_STRING); // audigy2 ZS retail + sb250
            break;
        case 0x20031102: // [92]
            strncpy(tmp_str,"Sound Blaster Audigy 2 ZS SB0352 10k2",KX_MAX_STRING); // audigy2 ZS ?
            break;
        case 0x20041102: // [95]
            strncpy(tmp_str,"Sound Blaster Audigy 2 ZS SB035X 10k2",KX_MAX_STRING); // Audigy2 zs sb0350/sb0355 / Gateway OEM
            break;
        case 0x20051102: // [96]
            strncpy(tmp_str,"Sound Blaster Audigy 2 ZS SB035X 10k2",KX_MAX_STRING); // Audigy2 zs SB0350/359
            break;
        case 0x20061102: // [94]
            strncpy(tmp_str,"Sound Blaster Audigy 2 ZS SB035X 10k2",KX_MAX_STRING);
            break;
        case 0x20071102: // [93]
            strncpy(tmp_str,"Sound Blaster Audigy 4 PRO SB0380 10k2 CA10200",KX_MAX_STRING); // audigy4 PRO
            break;
            
        case 0x10001102: // [103]
            strncpy(tmp_str,"Sound Blaster Audigy 2 SB1000 10k2",KX_MAX_STRING); // audigy2 value [?]
            break;
        case 0x10011102: // [100]
            strncpy(tmp_str,"Sound Blaster Audigy 2 SB0400 10k2",KX_MAX_STRING); // audigy2 value
            // has ac97 codec
            break;
        case 0x10211102: // [102]
        {
            strncpy(tmp_str,"Sound Blaster Audigy 4 SB0610 10k2 CA10300",KX_MAX_STRING);
            is_a4=1;
            // has ac97
        }
            break;
            
            //FIXME find subsys id for audigy 4 and put them here
            /*
        case 0x10201102:
        {
            strncpy(tmp_str,"Sound Blaster Audigy 4 SB0660 10k2 CA10300",KX_MAX_STRING);
            is_a4=1;
        }*/
            
        case 0x10221102: // [104]
            strncpy(tmp_str,"Sound Blaster Audigy 2 SB1022 10k2",KX_MAX_STRING); // Audigy2 value ?
            break;
        case 0x10241102:
            strncpy(tmp_str,"Sound Blaster Audigy RX SB1550 10k2 CA10300",KX_MAX_STRING); // audigy rx experimental
            // has ac97 codec
            is_10k3 = 1;
            is_10k2 = 1;
            is_a4=1;
            busName = PCIExpress;
            //ret=-1;
            break;
        case 0x11011102: // [106]
            strncpy(tmp_str,"Sound Blaster Audigy SA SB1101 10k2",KX_MAX_STRING); // Audigy SA ??
            break;
            
        case 0x40021102:
            if(!is_k8)
                strncpy(tmp_str,"EMU E-0404 10k2",KX_MAX_STRING); // [111]
            else
                strncpy(tmp_str,"EMU E-0404 10k8",KX_MAX_STRING); // [120]
            
            is_edsp=1;
            lack_ac97=1;
            break;
        case 0x40031102:
            if(!is_k8)
                strncpy(tmp_str,"EMU E-1010 10k2",KX_MAX_STRING); // [112]
            else
                strncpy(tmp_str,"EMU E-1010 10k8",KX_MAX_STRING); // [121]
            
            is_edsp=1;
            lack_ac97=1;
            break;
        case 0x40041102: // [123]
            if(is_k8)
            {
                strncpy(tmp_str,"EMU EM8960 10k8",KX_MAX_STRING); // EM8960: 1010 PCI
                is_edsp=1;
                lack_ac97=1;
            }
            else
            {
                strncpy(tmp_str,"EMU Un4004 10k2",KX_MAX_STRING); // ??
            }
            break;
        case 0x40051102:
            if(is_k8)
            {
                strncpy(tmp_str,"EMU EM8984 10k8",KX_MAX_STRING); // EM8984: 0404 PCIe
                is_edsp=1;
                lack_ac97=1;
                busName = PCIExpress;
            }
            else
            {
                strncpy(tmp_str,"EMU Un4005 10k2",KX_MAX_STRING); // ??
            }
            break;
        case 0x40071102: // EM8982 - 1010 ('PCIe' series)
        {
            if(is_k8)
            {
                strncpy(tmp_str,"EMU EM8982 10k8",KX_MAX_STRING);
                is_edsp=1;
                lack_ac97=1;
            }
            else
                strncpy(tmp_str,"EMU Un4007 10k2",KX_MAX_STRING);
        }
            busName = PCIExpress;
            break;
            
        case 0x42011102: // [122]
            strncpy(tmp_str,"EMU EM8950 10k8",KX_MAX_STRING); // 1616 CardBus v2
            is_edsp=1;
            lack_ac97=1;
            is_cardbus=1;
            break;
            
        default:
            strncpy(tmp_str,"Generic card",KX_MAX_STRING);
            busName = PCI;
            ret=-1;
            break;
    }
    return ret;
}

int kx_get_friendly_name_from_kx_object(kx_hw &hw, char &tmp_str);

int kx_get_friendly_name_from_kx_object(kx_hw &hw, char &tmp_str){
    
    return kx_get_friendly_name(hw.pci_device,hw.pci_subsys,hw.pci_chiprev,&tmp_str,
                                hw.is_51,hw.has_surdac,
                                hw.is_aps,hw.is_10k2,hw.is_10k3,hw.is_a2,hw.is_a2ex,hw.is_k8,hw.is_a4,hw.is_edsp,
                                hw.have_ac97,hw.lack_ac97,hw.is_zsnb,hw.is_cardbus,hw.busName);
};

int kx_get_friendly_name_from_kx_object_no_string(kx_hw *&hw);

int kx_get_friendly_name_from_kx_object_no_string(kx_hw *&hw){
    char tmp_str[KX_MAX_STRING];
    
    return kx_get_friendly_name(hw->pci_device,hw->pci_subsys,hw->pci_chiprev,tmp_str,
                                hw->is_51,hw->has_surdac,
                                hw->is_aps,hw->is_10k2,hw->is_10k3,hw->is_a2,hw->is_a2ex,hw->is_k8,hw->is_a4,hw->is_edsp,
                                hw->have_ac97,hw->lack_ac97,hw->is_zsnb,hw->is_cardbus,hw->busName);
};

Share this post


Link to post
Share on other sites

Finally i am releasing an alpha of the kx driver mod, there are two ways to use it, with the installer pack and the kext only pack, i suggest the first option, says that, install it and test it on your machines and give me feedback

 

link for the kext only (if you have clover put it in [your clover efi folder]/clover/kexts/[your macOS version]/ so it will not be deleted when updating macOS):

 
link for the installer pack (the best way to install it, but you have to reinstall it when you upgrade macOS):

Share this post


Link to post
Share on other sites

As those cards are almost the only choice for internal cards the development of this driver should get more attention by all the serious Hackintosh users. Unfortunately, just like in the PC world, most people don't care about getting a "real" sound card and stick with the onboard sound.

Share this post


Link to post
Share on other sites

As those cards are almost the only choice for internal cards the development of this driver should get more attention by all the serious Hackintosh users. Unfortunately, just like in the PC world, most people don't care about getting a "real" sound card and stick with the onboard sound.

 

these are not the only alternative for internal sound cards, but are some of the cheapest internal cards that you can find (including the audigy rx that you can find in shops today) there are other alternatives, but they are some professional stuff or expensive stuff, or there are also some sound blaster x-fi that are quite cheap and works with voodoo hda instead and also some professional grade cards works with my kx driver mod

Share this post


Link to post
Share on other sites

For me the card has not worked since Yosemite. I am using now Sierra.

 

please specify which card, so I can help you

Share this post


Link to post
Share on other sites

ok, so, specify which card when switching between posts, first I suggest to you to try mine driver mod and to make sure that the card is properly installed and that you use the kext-dev-mode=1 boot arg that allows the driver to run properly on recent versions of Mac OS

Share this post


Link to post
Share on other sites

I tried both ways to install the kext. Placing it in EFI/CLOVER/KEXTS/OTHER did not work. Using the installer which places the kext in S/L/E did not work either. I got as far as selecting a sound effect to test for sound, when the system froze. This has been the result ever since El Capitan.

Share this post


Link to post
Share on other sites

for clover you don't have to place the kext in EFI/CLOVER/KEXTS/OTHER, but in EFI/CLOVER/KEXTS/[the folder named with the version of mac os you are using] so for example for sierra you have to put the kext in EFI/CLOVER/KEXTS/10.12 for yosemite you have to put it in EFI/CLOVER/KEXTS/10.10 instead, if the driver works you will see in system preferences->sound and in the outputs section a new device that will be named sound blaster audigy 2 zs, i suggest also to boot with -v to and send me video of the booth process with the kext installed, so i can tell to you what is happening and if the driver is working or if it is a hardware problem from the card its' self, also i suggest to you tu try mine installer with the installer packet that will clean previous kext installations of kx driver and will install it in s/l/e or try to install only the kext in clover to EFI/CLOVER/KEXTS/[kext named like the version of mac os you are using] if you use EFI/CLOVER/KEXTS/OTHER the kext will not be loaded at all since that folder is used only for versions of mac os that clover doesn't know, so on sierra you have to to use it, just use the latest version of clover and put the kext in EFI/CLOVER/KEXTS/10.12 and check if you are using kext-dev-mode=1 and -v in the boot args. and then check if does not work check if its an hardware problem, for example use programs like DPCI manager that will list all the pci devices, so if the card appears here the driver should see it, we should investigate what's the error

Share this post


Link to post
Share on other sites

My post states that I did install with your installer to s/l/e. I did see the driver in preferences, sound, output, but when I clicked on sound effects my system froze. This has happened since El Capitan. I wll try to install to kexts/10.12. I am using kext-dev-mode=1

Share this post


Link to post
Share on other sites

ok, the driver works and the card is recognized, i suggest to you to try to boot in safe mode, then reboot normally and you should not have problems, because it clear kernel cache and kext cache

Share this post


Link to post
Share on other sites

ok, the driver works and the card is recognized, i suggest to you to try to boot in safe mode, then reboot normally and you should not have problems, because it clear kernel cache and kext cache

 

 

I will try that.

Share this post


Link to post
Share on other sites

ok, the driver works and the card is recognized, i suggest to you to try to boot in safe mode, then reboot normally and you should not have problems, because it clear kernel cache and kext cache

 

The same thing happened. When I try to play sound, the system freezes.

Share this post


Link to post
Share on other sites

I'm struggling with the crappy VIA2021 onboard on my Gigabyte Z77 D3H.

I managed to get it working in Sierra, but it's very unstable and need to be fixed after few usage.

 

So i decided to keep out of my box my older SoundBlaster live 5.1 value!

 

I get it working good with your driver, but only the green output actually.

The 2nd black output doesn't work (  and it's not displayed too)

The input isn't displayed at all.

 

I use Hackintosh as daw with a  Steinberg MR816X but for daily usage i don't power it up and need to have a working two outputs and an input.

 

Any idea?

Thanks.

Share this post


Link to post
Share on other sites

I'm struggling with the crappy VIA2021 onboard on my Gigabyte Z77 D3H.

I managed to get it working in Sierra, but it's very unstable and need to be fixed after few usage.

 

So i decided to keep out of my box my older SoundBlaster live 5.1 value!

 

I get it working good with your driver, but only the green output actually.

The 2nd black output doesn't work (  and it's not displayed too)

The input isn't displayed at all.

 

I use Hackintosh as daw with a  Steinberg MR816X but for daily usage i don't power it up and need to have a working two outputs and an input.

 

Any idea?

Thanks.

 

the driver (and the original driver that I used to start my work) is limited to use only the green output, currently I don't know how to get work the inputs (I'd like to get at least the pink input to work) on Mac OS X on that cards, I have a prototype of the driver that has the inputs in preferences, but the inputs doesn't works yet, if some one can help me to get it working it will be very help foul (need guys with some experience in driver developing on Mac)

 

 

For the other guys, do you like that name for the sound card or I should use sound blaster instead of sb? I decided for sb because the name is already too long, and putting sound blaster makes it longer

post-1390153-0-67036200-1490134529_thumb.png

Share this post


Link to post
Share on other sites

Actually I'd cut anything behind the RX and use "Sound Blaster", because this is what the packaging says. Consumers don't care about product codes in the end as long as it works.

On the other hand, as long as it's not completely stable, the full string might be helpful for debugging.

Just my $00,02.

Share this post


Link to post
Share on other sites

Actually I'd cut anything behind the RX and use "Sound Blaster", because this is what the packaging says. Consumers don't care about product codes in the end as long as it works.

On the other hand, as long as it's not completely stable, the full string might be helpful for debugging.

Just my $00,02.

yes i understand, i can do it, but i have to do some consistent modifications to get the code to show other stuff only when is enabled some sort of debugging 

Share this post


Link to post
Share on other sites

No I thought about "debugging" in terms of as long as the driver doesn't reach 1.0, you keep the string, once you think it's ready for a stable release you cut the string.

Share this post


Link to post
Share on other sites

No I thought about "debugging" in terms of as long as the driver doesn't reach 1.0, you keep the string, once you think it's ready for a stable release you cut the string.

 

i mean in the code, i can insert a system that can be enabled in some way for example from the info.plist by changing a variable, to enable full string and other experimental features and debugging stuff 

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.

Announcements

  • Similar Content

    • By Mieze
      A New Driver for Realtek RTL8111
       
      Due to the lack of an OS X driver that makes use of the advanced features of the Realtek RTL81111/8168 series I started a new project with the aim to create a state of the art driver that gets the most out of those NICs which can be found on virtually any cheap board on the market today. Based on Realtek's Linux driver (version 8.035.0) I have written a driver that is optimized for performance while making efficient use of system resources and keeping the CPU usage down under heavy load.

      Key Features of the Driver
      Supports Realtek RTL8111/8168 B/C/D/E/F/G/H found on recent boards. Support for multisegment packets relieving the network stack of unnecessary copy operations when assembling packets for transmission. No-copy receive and transmit. Only small packets are copied on reception because creating a copy is more efficient than allocating a new buffer. TCP, UDP and IPv4 checksum offload (receive and transmit). TCP segmentation offload under IPv4. Support for TCP/IPv6 and UDP/IPv6 checksum offload. Fully optimized for Mountain Lion (64bit architecture) but should work with Lion too. As of now there is no support for Snow Leopard but it can be added if someone will create the necessary patches. Supports Wake on LAN. Support for Energy Efficient Ethernet (EEE) which can be disabled by setting enableEEE to NO in the drivers Info.plist without rebuild. The default is YES. The driver is published under GPLv2.  
      Limitations
      As checksum offload doesn't work with jumbo frames they are unsupported up to version 2.3.x. Version 2.4.0 might come with experimental jumbo frame support depending on test results of the development versions. No support for 32bit kernels.  
      Installation
      You might want to install the driver to /L/E as usual but it's also ok to use Clover's injection function (installation in the EFI folder). Use your favorite kext installation tool for installation or perform the installation manually (for Clover or OC injection). It's your call! Reboot Open System Preferences again, select Network and check if the new network interface has been created automatically or create it manually now. Configure the interface.  
      Help - I'm getting kernel panics!
      Well, before you start complaining about bugs after you upgraded macOS and ask me to publish a driver update, you should first try to resolve the issue on your own by cleaning the system caches.
      As the driver uses macOS's private network driver interface, which is supposed to be used by Apple provided drivers only, you might run into problems after an OS update because the linker may fail to recognize that IONetworking.kext has been updated and that the driver needs to be linked against the new version (Apple provided drivers avoid this problem because they are always updated together with IONetworking.kext). As a result, the linking process produces garbage and the driver may call arbitrary code when trying to call functions from IONetworking.kext. This usually results in unpredicted behavior or a kernel panic. In order to recover from such a situation, you should clean the System Caches forcing the linker to recreate it's caches:
      Delete all the files in /System/Library/Caches and it's subdirectories but leave the directories and the symbolic links intact. This is very important! Reboot. Recreate the kernel cache. Reboot again.  
      The same procedure should be applied when you are experiencing erratic behavior after an update! Please keep in mind that you have to disable SIP temporarily when you are using OC.
       
      Troubleshooting
      Make sure you have followed the installation instructions especially when you have issues with certain domains while the others are working fine. Use the debug version to collect log data when trying to track down problems. The kernel log messages can be found in /var/log/system.log. For Sierra and above use "log show --predicate "processID == 0" --debug" in order to retrieve kernel logs. Include the log data when asking for support or giving feedback. I'm an engineer, not a clairvoyant. Check your BIOS settings. You might want to disable Network Boot and the UEFI Network Stack as these can interfere with the driver. Double check that you have removed any other Realtek kext from your system because they could prevent the driver from working properly. Verify your bootloader configuration, in particular the kernel flags. Avoid using npci=0x2000 or npci=0x3000.  In Terminal run netstat -s in order to display network statistics. Carefully examine the data for any unusual activity like a high number of packets with bad IP header checksums, etc. In case auto-configuration of the link layer connection doesn't work it might be necessary to select the medium manually in System Preferences under Network for the interface. Use Wireshark to create a packet dump in order to collect diagnostic information. Keep in mind that there are many manufacturers of network equipment. Although Ethernet is an IEEE standard different implementations may show different behavior causing incompatibilities. In case you are having trouble try a different switch or a different cable.  
      FAQ
      I want to disable Energy Efficient Ethernet (EEE) but I don't know how? Select a medium without EEE manually. WoL from S5 doesn't work with this driver but under Windows it's working. Is this a driver bug? No it isn't, the driver is working as it should because OS X doesn't support WoL from S5.  
      Current status
      The driver has been successfully tested under 10.8.x and 10.9 with the B, C, D, E, F, G and H versions of the RTL8111/8168 and is known to work stable on these devices.  
      Changelog
      Version 2.4.0d4 (2020-10-10) Experimental jumbo frame support up to 9k for chipset 16 and above Requires 10.14 or newer. Version 2.3.0 (2020-08-14) Reworked medium section and EEE support to resolve problems with connection establishment and stability. Added option to supply a fallback MAC. Updated Linux sources to 8.047.04 and added support for new family members Requires 10.14 or newer.
      Version 2.2.2 (2018-01-21) Force ASPM state to disabled/enabled according to the config parameter setting. Requires 10.12 or newer. Version 2.2.1 (2016-03-12): Updated underlying linux sources from Realtek to 8.041.00. Added support for RTL8111H. Implemented Apple’s polled receive driver model (RXPOLL). Requires 10.11 or newer. Support for older versions of OS X has been dropped. Version 2.0.0 (2015-06-21): Uses Apple's private driver interface introduced with 10.8. Supports packet scheduling with QFQ. Please note that 2.0.0 is identical to 2.0.0d2. Only the version number has changed. Version 1.2.3 (2014-08-23): Reworked TSO4 and added support for TSO6. Version 1.2.2 (2014-08-44): Added an option to disable Active State Power Management (ASPM, default disabled) as ASPM seems to result in unstable operation of some chipsets. Resolved a problem with Link Aggregation after reboot. Added a workaround for the multicast filter bug of chipset 17 (RTL8111F) which prevented Bonjour from working properly Version 1.2.0 (2014-04-24): Updated underlying linux sources from Realtek to 8.037.00. Improved interrupt mitigate to use a less aggressive value for 10/100 MBit connections. Version 1.1.3 (2013-11-29): Improved transmit queue handling made it possible to reduce CPU load during packet transmission. Improved deadlock detection logic in order to avoid false positives due to lost interrupts. Version 1.1.2 (2013-08-03): Improved SMB performance in certain configurations. Faster browsing of large shares. Version 1.1.0 (2013-06-08): Support for TCP/IPv6 and UDP/IPv6 checksum offload added (can be disabled in Info.plist). Maximum size of the scatter-gather-list has been increased from 24 to 40 segments to resolve performance issues with TSO4 when offloading large packets which are highly fragmented. TSO4 can be disabled in Info.plist without rebuild. Statistics gathering has been improved to deliver more detailed information (resource shortages, transmitter resets, transmitter interrupt count). The interrupt mitigate settings has been changed to improve performance with SMB and to reduce CPU load. Configuration option added to allow for user defined interrupt mitigate settings without rebuild. Version 1.0.4 (2013-05-04): Moved setLinkStatus(kIONetworkLinkValid) from start() to enable(). Cleaned up getDescCommand(). Version 1.0.3 (2013-04-25): The issue after a reboot from Windows has been eliminated. Version 1.0.2 (2013-04-22): Added support for rx checksum offload of TCP and UDP over IPv6. Version 1.0.1 (2013-03-31): Improved behavior when rx checksum offload isn't working properly. Adds the chipset's model name to IORegistry so that it will show up in System Profiler.  
      Known Issues
      There are still performance problems with regard to SMB in certain configurations. My tests indicate that Apple's Broadcom driver shows the same behavior with those configurations. Obviously it's a more general problem that is not limited to my driver. WoL does not work in certain configurations. Old systems with 3 and 4 series chipsets exhibit performance issues in recent versions of macOS because there is no optimized power management for these systems in macOS anymore as Apple dropped support for the underlying hardware a long time ago. In case you are affected, please upgrade your hardware or find an alternative solution because I have no plans for a workaround. Sorry, but I don't think that it's worth the effort.  
      Getting the driver
      The source code can be found here: https://github.com/M...driver_for_OS_X There is also a pre-build binary for Mavericks and above: https://www.insanelymac.com/forum/files/file/88-realtekrtl8111-binary/  
      Building from Source
      I'm always using the latest version of XCode for development. You can get a free copy of XCode after becoming a member of the Apple developer program. The free membership is sufficient in order to get access to development tools and documentation.
    • By Slice
      Some users claim that using VoodooHDA they hear loud bump at system start and sound in system comes with noise.
      Although this can be repaired with existing drivers I propose a version that do this automatically.
      It started silently and have very clear output. The file is compiled as 32/64 and works from 10.6 up to 10.12.
      VoodooHDA.kext-289.zip
      The sources is in my signature.
       
      There is a VoodooHDA,prefPane compatible with Sierra
      VoodooHDA.prefPane-289.zip

       
      Now there is a version 2.9.0 by Zenith432.
      It can work with multichannel sound and play it on 5.1 analog system.

      VoodooHDA.kext-2.9.0d8.zip
      27.04.2017 
      d10 - Fix issues involving AudioControls
      VoodooHDA.kext-2.9.0d10.zip
       
      20.11.2018
      Fix issue with scratch on slow CPU
      VoodooHDA.kext-291SSE.zip
       
      04.05.2019
      More checks for memory allocation. More clear sound anyway. 
      VoodooHDA.kext-292.zip
      IOAudioFamily.kext.zip -- it's a pity this kext works up to 10.14.5 and is not working in 10.14.6 and up.
       
      AppleHDADisabler.kext.zip
       
      10.10.2020
      The version is compiled under BigSur  and is working here
      VoodooHDA.kext-295.zip
      AppleHDADisabler is not used. DSDT has a device HDAS and not HDEF so why there is no conflict with AppleHDA.

    • By Mieze
      This project is dedicated to Lucy, my lovely little Tyrannofelis Rex. 
       

       
      LucyRTL8125Ethernet is an open source driver for the Realtek RTL8125 family of 2.5GBit Ethernet controllers.
       
      Key Features of the Driver
      Supports all versions of Realtek's RTL8125 2.5GBit Ethernet Controllers found on recent boards. Support for multisegment packets relieving the network stack of unnecessary copy operations when assembling packets for transmission. No-copy receive and transmit. Only small packets are copied on reception because creating a copy is more efficient than allocating a new buffer. TCP, UDP and IPv4 checksum offload (receive and transmit). TCP segmentation offload over IPv4 and IPv6. Support for TCP/IPv4, UDP/IPv4, TCP/IPv6 and UDP/IPv6 checksum offload. Supports jumbo frames up to 9000 bytes (strongly recommended for 2.5GBit operation). Fully optimized for Mojave and above. Note that older versions of macOS might not support 2.5GB Ethernet. Supports Wake on LAN (untested). Supports VLAN (untested). Support for Energy Efficient Ethernet (EEE) which can be disabled by setting enableEEE to NO in the drivers Info.plist without rebuild. The default is YES. The driver is published under GPLv2.  
      Current Status
      The driver has been tested successfully under Catalina (10.15.4 and above) and, according to first tests, is working stable. I haven't experienced any Kernel Panics during my tests and is working stable on my primary work machine. The driver has been designed to work with Catalina but might also work with Mojave, provided you build from source with Xcode 10.. Please keep in mind that support for 2.5GBit Ethernet was introduced in Mojave (or maybe High Sierra?) so that there is no way to make it work with Sierra or below.  
      Known Issues
      Using autoselect medium it seems to prefer negotiating a connection speed of 1Gbit with my switch so that I had to select 2.5GBit/s manually in order to achieve this speed but it might be different with other switches.   Installation
      You might want to install the driver to /L/E as usual but it's also ok to use Clover's injection function (installation in the EFI folder). Use your favorite kext installation tool for installation or perform the installation manually (for Clover injection). It's your call!  
      Help - I'm getting kernel panics!
      Well, before you start complaining about bugs after you upgraded macOS and ask me to publish a driver update, you should first try to resolve the issue on your own by cleaning the system caches.
      As the driver uses macOS's private network driver interface, which is supposed to be used by Apple provided drivers only, you might run into problems after an OS update because the linker may fail to recognize that IONetworking.kext has been updated and that the driver needs to be linked against the new version (Apple provided drivers avoid this problem because they are always updated together with IONetworking.kext). As a result, the linking process produces garbage and the driver may call arbitrary code when trying to call functions from IONetworking.kext. This usually results in unpredicted behavior or a kernel panic. In order to recover from such a situation, you should clean the System Caches forcing the linker to recreate it's caches:
      Delete all the files in /System/Library/Caches and it's subdirectories but leave the directories and the symbolic links intact. This is very important! Reboot. Recreate the kernel cache. Reboot again.  
      Troubleshooting
      Make sure you have followed the installation instructions especially when you have issues with certain domains while the others are working fine. Use the debug version to collect log data when trying to track down problems. The kernel log messages can be retrieved with "log show --predicate "processID == 0" --debug" in order to retrieve kernel logs. Include the log data when asking for support or giving feedback. I'm an engineer, not a clairvoyant. Don't copy and paste large amounts of log data to your post. Create an archive with the log data and attach it to your post. In case you don't want to make your log data publicly accessible, contact me via PM and I will provide you a mail address to send it directly to me.  Delete the following files: /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist /Library/Preferences/SystemConfiguration/preferences.plist In Terminal run netstat -s in order to display network statistics. Carefully examine the data for any unusual activity like a high number of packets with bad IP header checksums, etc. In case auto-configuration of the link layer connection doesn't work it might be necessary to select the medium manually in System Preferences under Network for the interface. Use Wireshark to create a packet dump in order to collect diagnostic information. Keep in mind that there are many manufacturers of network equipment. Although Ethernet is an IEEE standard, different implementations may show different behavior causing incompatibilities. In case you are having trouble try a different switch or a different cable.  
      Changelog
      Version 1.0.0 (2020-08-14) Changed version number to make this the first official release. Version 1.0.0d6 (2020-06-14) Fixed chip recognition. Version 1.0.0d3 (2020-04-20) First working development release.  
      Getting the driver
      Source code can be found on GitHub: https://github.com/Mieze/LucyRTL8125Ethernet You'll find the lastest prebuilt binary in the download section: https://www.insanelymac.com/forum/files/file/1004-lucyrtl8125ethernet/  
       
    • By eLDeus
      Hello, can't figure out why there's no Line-In input option with VoodooHDA, but I definetly have it in my built-in audio card on the motherboard.
      Thanks!
    • By acsapos
      Hello dear insanelymac family!
      My plan for this week, to build a hackintosh. I'm trying, reading a lot of forums, posts, but i cant go forward. I tried OpenCore, Clover, and [url="http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/"]#####[/url] too. I have an Opencore right now, because this loader went longer than the others, and its easy to configure in my opinion. So, the problem is.. When i boot up to my installer USB, it will always stop somewhere after about 10 seconds. Always changing positions, like in the middle of a text, etc. You can see the screen on the image what i uploaded. I tried a lot of things, but somehow, nothing is happening. CPU: Xeon 2620-v3 GPU: XFX RX 580 XXX Edition 8GB RAM: 2 x 8GB DDR4 2400Mhz Motherboard: Killsre X99-D4 (bought from aliexpress) Guide followed: I followed the Dortaina's Opencore guide / HASWELL-E What part I got an issue with: Booting up to my Installer USB What files/config I am using: My entire EFI uploaded to this post Extra Info: I cant get to open the installer overall, the longest what i reached what you see on the imgur link. I have an opencore file with some LOG(uploaded) Thanks in advance, for any help. I would really appreciate that. David acsapos-EFI.rar


      opencore-2020-08-11-020217.txt
×