Jump to content

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


488 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

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);
};

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):

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

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

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.

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

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

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

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.

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.

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

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.

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 

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 

×
×
  • Create New...