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.
With my mod, created starting from the sources of the last version of kx audio driver, and also by using apple developer documentation for pci and audio drivers as reference, i am working to achieve 2 things mainly: get all the cards supported by the driver to work with all the recent versions os macOS and add support for other cards that are not officially supported by the driver that works or could, but needs to be more properly supported.
This driver is made to support cards based on the E-mu 10k1, 10k2 and similars (like what is used by audigy rx and audigy 4 cards).
Supported cards are:
- most of the sound blaster live!, live! 5.1 and live! 5.1 digital series
- sound blaster 512
- sound blaster 256
- other creative and e-mu sound cards based on the 10k1 chip (cards with the ES1370/ES1371/ES1372/ES1373 chips are not supported)
- sound blaster Audigy series (1 st gen)
- sound blaster Audigy 2 and audigy 2 zs series
- E-MU cards based on the 10k2 sound chip
- Some Audigy 4 cards (SB0610 only) and the audigy 4 pro
- Sound blaster Audigy RX (sb0155)
- other creative and e-mu cards based on the (10k2, 10k2,5 and CA10300 based cards)
NOT supported cards:
- Any ISA Sound card
- ES1370/ES1371/ES1372/ES1373 based sound cards
- CMI8738/CMI8788 based 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
- Any sound blaster Z/ZS/ZX and similar series
- Any sound blaster AE5 series
In the time being the things i have modded or added with this mod are:
- increased the simple buffer frames number with different values for emu10k1 based cards and emu10k2 based cards (including recent audigy 4 and rx) to reduce and all the audio cracking issues and possibly fixing all of them on a lot of cards
- added a more proper support for the pci express sound blaster audigy rx (which basically is an audigy 4 with a pcie bridge chip)
- added more fancy names for the cards in the settings and other 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 added lots of sample rates (from 8 khz to 176,4 khz) to accomodate any possible usecase (note that 10k1 sound cards are limited up to 48khz sample rate, and 10k2 based cards are limited to 176,4 khz because of issues getting 192 khz to work, for now the driver goes up to 176,4 khz for such cards)
- added boot args to manage the driver:
Boot args to use with the kx audio driver mod:
-kx_disable or -kxdisable or -kxoff
This will prevent the driver from doing any initialization work, so the driver is basically disabled,
use it to boot your ssytem in case the driver is giving you issues and kernel panics while you are
trying to boot/using your system, so you are able to remove this driver or replace it with another
version of it or to do some truble shooting.
-kx_debug or -kxdebug or -kxspec
Will show more debug info about the card, mainly the i/o port address and the kind of bus that it uses
-kx_exp_deb or -kx_beta or -kxbeta
Will enable experimental and probably not working or unstable features like showing inputs for the card
or 192 khz sampling rate, use it only for testing and debug purposes, this may likely cause instability
and problems in the everyday usage! Use it at your own risk!
-kx_original or -kxoriginal
This will basically turn off almost all the mods of this mod, so the driver will come to work as it was
before modding it, this can be usefoul as a "safe mode" like feture to have a working driver in case of
problems with features of the mod, so using this means no crsking issues improvements, only 48 khz sample
rate and only features of the non-modded kx audio driver for mac os x
- created a script file to use with the driver for installing the driver and also to load/unload, update, repolace it and it's libraries.
What i'd like to implement but i don't know how to do:
- I'd like mainly to add a more proper support to the pci bridge chip of the audigy rx,
- have audio inputs working,
- 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 me, you can, and also an hand from other people with testing and feedback will be nice.
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):
- download from the downloads section: kX Audio Driver Mod by ITzTravelInTime 1.01
- external download: https://dl.dropboxus...Driver.kext.zip
link for the installer pack (the best way to install it, but you have to reinstall it when you upgrade macOS, remeber to fix kext permitions and rebuild the kernelcache if you want to remove the kext from it's install directory without using the unistall feature of the provvided script):
- download: https://dl.dropboxus...aller pack.zip
Source code from Git Hub:
- github repo: https://github.com/ITzTravelInTime/kx-audio-driver
NOTE: Some system because of some problems with the HPET may need to use FixHPET in clover and to install the kext in /System/Library/Extensions or to do other kind of hpet mods to run the driver properly, but only on some systems, most systems should not require it
How to make AppleHDAController load on Ryzen boards?
Rename(/add) your audio controller to your DSDT/SSDT as HDEF
Add a _DSM method to your HDEF device with layout id 1
Patch the AppleHDAController binary, because it has a static table containing the supported PCI Vendor/DeviceID pairs and it also checks the VendorID against known values. As an example I provide a dif file and patched 10.13.3 binary, but if you want to I can patch the binary for other versions.
After AppleHDAController loads to actually get sound working you need to patch AppleHDA.kext for the codec on your board. First I tried to use Lilu+AppleALC for this task, but for some reason it refused to work. (I might look into it later why) But for the time being it was easier to use toleda's cloverALC script for that, but to make it work I had to change(/remove) the specified location of the HDEF device from the script. And for some reason it also required me to mount the EFI partition manually.
if [[ $(cat /tmp/HDEF.txt | grep -c "HDEF@1") != 0 ]]; then
if [[ $(cat /tmp/HDEF.txt | grep -c "HDEF") != 0 ]]; then