[WIP!][KERNEL] Razer Phone 2 Kernel (+exfat module, TWRP device tree, and more!)

Search This thread

Warrior1988

Senior Member
Jun 28, 2015
332
262
32
Custom kernel. So far I've figured out trying to modify the vendor partition is an absolute nightmare. I might just have a jerry-rigged magiskinit in the ramdisk to bind mount something from the ramdisk over it before they're modprobed, but we definitely need new modules. Disabling symbol checking just makes it go crazy
Edit: got something to work...I think. I'll try again later...

Excellent ?
 

lixindiyi

Member
Nov 10, 2013
12
0
Before I upgrade my RP2 to Android Pie, I forgot to uninstall the Xposed framework in Magisk, which caused I got a bootloop once I rooted the phone on Pie using Magisk. Although I have flashed stock boot.img to recover, I need rooting my phone to do some customization. It is so frustrating, and the only solution I've found so far is to uninstall the Magisk and its modules completely using TWRP. So I really need a working TWRP on Pie. I hope you guys can help me out soon. Thank you in advance!!!:good:
 

Warrior1988

Senior Member
Jun 28, 2015
332
262
32
Before I upgrade my RP2 to Android Pie, I forgot to uninstall the Xposed framework in Magisk, which caused I got a bootloop once I rooted the phone on Pie using Magisk. Although I have flashed stock boot.img to recover, I need rooting my phone to do some customization. It is so frustrating, and the only solution I've found so far is to uninstall the Magisk and its modules completely using TWRP. So I really need a working TWRP on Pie. I hope you guys can help me out soon. Thank you in advance!!!:good:

Have you tired my guide? Also try flashing stock boot.img then wipe cache then flash magisk boot.img But really data wipe would fix it which you're trying to avoid.
 
Last edited:

lixindiyi

Member
Nov 10, 2013
12
0
Have you tired my guide? Also try flashing stock boot.img then wipe cache then flash magisk boot.img But really data wipe would fix it which you're trying to avoid.

I can't wipe cache in bootloader.

>fastboot erase cache
Erasing 'cache' FAILED (remote: 'Check device console.')
fastboot: error: Command failed

There is no "wipe cache" option in stock recovery either.
 

thecubed

Inactive Recognized Developer
Aug 19, 2008
1,046
10,457
Austin, TX
Custom kernel. So far I've figured out trying to modify the vendor partition is an absolute nightmare. I might just have a jerry-rigged magiskinit in the ramdisk to bind mount something from the ramdisk over it before they're modprobed, but we definitely need new modules. Disabling symbol checking just makes it go crazy
Edit: got something to work...I think. I'll try again later...

Pretty please don't make a kernel that requires a custom /vendor partition, since that's going to be a nightmare for users and difficult for everyone to debug when they come to XDA for help ;)

There should be no need for the data structures to change if you're compiling the source as provided by Razer.
If you're trying to do something like bump the phone to latest 4.9 you're in for a difficult time. If you absolutely had to, you could start from CAF 4.9 but that's just asking for trouble, and would be a major time sink for not much gain (unless I'm missing something here)

I'm currently working on getting P-MR0-3040 building, since that's what my phone updated to and is stuck at (lol, some days I wonder if I'm actually competent...).
My github is updated with the MR0-3040 source, and once that's building and stable (I need to update my build env to 9.0 first, since building in an 8.1 build env is trouble), I'll update it to MR1-3110 source and figure out how to get my phone updated too heh.

EDIT: I've fixed up the 3040 source, and have verified that it boots (and audio works properly) on my device. Next up, TWRP for 3040 so I can update myself to 3110 ;)
The source is on my Github: https://github.com/thecubed/android_kernel_razer_sdm845/tree/android-9.0-MR0-3040
 
Last edited:
  • Like
Reactions: CurtisMJ and RKBD

CurtisMJ

Senior Member
May 23, 2013
633
532
Pretty please don't make a kernel that requires a custom /vendor partition, since that's going to be a nightmare for users and difficult for everyone to debug when they come to XDA for help ;)

There should be no need for the data structures to change if you're compiling the source as provided by Razer.
If you're trying to do something like bump the phone to latest 4.9 you're in for a difficult time. If you absolutely had to, you could start from CAF 4.9 but that's just asking for trouble, and would be a major time sink for not much gain (unless I'm missing something here)
Hehe. I was indeed trying to update to latest 4.9, so yeah. Possibly a useless exercise but I'm having fun (sort of). The kernel modules are installed by an rc file in the vendor partition. I figured out a way to mod the ramdisk to bind mount newer modules Magisk style, just need to get it to do it early enough (they're loaded in early-init). The scripts could even just purge them from the ramdisk when they're done. It could be mildly interesting... Edit: I actually think it might be a good idea to mod the scripts to just load all the new modules first. modprobe should then just ignore the stock modules...

EDIT: I DID IT! IT NEEDS A CUSTOM BUILD OF MAGISK BUT I DID IT. YEEEESSSSSS. Well it's satisfying at least...
 
Last edited:

thecubed

Inactive Recognized Developer
Aug 19, 2008
1,046
10,457
Austin, TX
Hi all,
Nope, I'm not dead... just been traveling for work a bunch recently.

I do now have working exFAT support on my RP2 with the custom kernel (+a magisk module) for 3040 (P MR0) only.
UUPZl8Vl.png


I haven't been able to upgrade my phone to P MR1 yet, since the upgrade fails every time. Once I get that working, I'll update my source for that too.

If you're running P MR0 3040 (it MIGHT work on MR1, but I can't say for sure, and wouldn't recommend it), you can try it by:
- Download http://downloads.codefi.re/thecubed/aura2/kernel/boot-p-3040-custom_3-exfat.img and flash to your active boot partition
- Download http://downloads.codefi.re/thecubed/aura2/tools/magisk-exfat-utils.zip and install with Magisk Manager

I've updated the source on my Github: https://github.com/thecubed/android_kernel_razer_sdm845/tree/android-9.0-MR0-3040_exfat
And the source for the Magisk module is here: https://github.com/thecubed/magisk-exfat-utils

The Magisk module is necessary since vold requires /system/bin/mkfs.exfat and /system/bin/fsck.exfat to be present before it will mount an exfat formatted filesystem once the drivers are present in the kernel. Originally I thought I'd need to recompile vold, but it seems like android 9.0 has dynamic exfat support in vold, which is nice. The Magisk module just adds the two binaries to /system in a systemless fashion so you get to keep Safetynet. The binaries are compiled from android 8.0's exfat libraries, and are simply used for creating and checking exfat filesystems - they don't support fixing exfat problems, so you'll need a real Windows machine for that.

I've also been working on something more fun on the side - here's a teaser:
DPpAqSCl.jpg

Hint: it's not quite Linda. It also needs kernel modifications to work properly, but I'm almost there.
 

DarkestSpawn

Senior Member
Aug 16, 2010
282
104
I've also been working on something more fun on the side - here's a teaser:

Hint: it's not quite Linda. It also needs kernel modifications to work properly, but I'm almost there.

Is that the Android equivalent of DeX mode running on an HP Lapdock? ^_^

Very nice! Hope you bake in an option for enabling it while casting to a wireless display as thats how I currently use mine. Great work, hope to see more on it!
 
  • Like
Reactions: thecubed

Gamesoul Master

Senior Member
Aug 26, 2010
682
177
Quick question: Are there any tweakable parameters with this kernel? Back in the day, got a bit spoiled (and overwhelmed) with all the things that could be adjusted with a kernel manager or scripts. In this case though, I'm just wondering about simple things like processor frequencies and governors.

Edit: Decided to just download Kernel Adiutor and check things out. Not a lot of tuneables (and a CPU governor I've never heard of before), but I'm not disappointed. I do recognize the parameters for the new governor, tweaked those a bit. Same with a few other things to squeeze out a little more efficiency.

However, I noticed that, before touching anything, the small cores seem to run at max a lot. It was showing them running at max roughly 40% of the time since boot (maybe a few days). Compared to deep sleep about 35% of the time, the rest in-between. Is that normal for the SD845? I know they're quite efficient, but that seems a bit high, compared to similar usage/apps on older CPU's. Just a general question, not trying to deeply troubleshoot.
 
Last edited:

xttweaponttx

Senior Member
May 23, 2013
56
16
Idaho Falls
Just wanted to bump this thread considering it's been a couple of months. Any word? Seeing as there's a magisk module finally letting me try substratum, I'd like to backup my system first.. This kernel would be a dream for that!

Thanks for all your efforts so far! Hope everybody's having a good summer :)
 
  • Like
Reactions: _Sherrif

_Sherrif

Senior Member
Seeing as there's a magisk module finally letting me try substratum

What is the Magisk Module you are referring to? You talking about the SMAIL Patcher by fOmey? That is what i am using anyway to get Substratum working.

Were you able to figure out how to theme settings menu and quick settings icons? I read somewhere were the Razer theme engine is preventing themeing of settings and a few other OS areas.

Also, there is a kernel which has TWRP baked in so you can do a backup, in case you haven't seen it. It is in the Razer Phone 2 ROMs, Kernels, Recoveries, & Other Development section. The kernel i am referring to may be the reason this WIP Kernel has went quiet.
 

xttweaponttx

Senior Member
May 23, 2013
56
16
Idaho Falls
What is the Magisk Module you are referring to? You talking about the SMAIL Patcher by fOmey? That is what i am using anyway to get Substratum working.

Were you able to figure out how to theme settings menu and quick settings icons? I read somewhere were the Razer theme engine is preventing themeing of settings and a few other OS areas.

Also, there is a kernel which has TWRP baked in so you can do a backup, in case you haven't seen it. It is in the Razer Phone 2 ROMs, Kernels, Recoveries, & Other Development section. The kernel i am referring to may be the reason this WIP Kernel has went quiet.

Oh, I hadn't seen this other kernel! I'll take a peek at that thread!

I actually started a thread a while back about the substratum issues; that's where I've been chatting about it if you wanna read there= https://forum.xda-developers.com/razer-phone-2/themes/substratum-t3922057/page2#post79967653 But yes, smali is what I meant.. sorry I called it wrong earlier! It's working for everything but system and play store.... Pretty sure it's the Razer theme engine interfering ?

---------- Post added at 12:03 PM ---------- Previous post was at 12:00 PM ----------


---
While scrolling through your link looking for that kernel, I found this!
https://forum.xda-developers.com/razer-phone-2/development/rom-mr1-stock-deodexed-zipalign-t3916502
It's instructions include arter97's kernel, and it explicitly states that subs is up and running! Gonna flash it tonight and report back to the subs thread! ??
 
  • Like
Reactions: _Sherrif

_Sherrif

Senior Member
While scrolling through your link looking for that kernel, I found this!
https://forum.xda-developers.com/razer-phone-2/development/rom-mr1-stock-deodexed-zipalign-t3916502
It's instructions include arter97's kernel, and it explicitly states that subs is up and running! Gonna flash it tonight and report back to the subs thread! ??

k. i thought you figured something else out for subs.:silly: The kernel referenced in my previous post works great. you will get red error text the first run of TWRP, but that is because TWRP is trying to load cache, which the RP2 doesn't seem to have. After the first boot no more red error text.
I run the f2f file system. The instructions to get it working are in the threads OP. But others have said they run the kernel without f2f, so it is not a must do thing, from what i have read. My first time running f2f and seems quick and smooth for my use.

Yes i seen Warrior1988 got his modded ROM with subs up and running, haven't tried it yet, but he has been working on it for awhile. i think i read in the thread the same problem exists with SYSTEM and so on for theming. He stated somewhere in the thread he used fOmey's smaili patcher to make it possible for subs. .
FYI - i was on VZW, before i switched to AT&T i had problems running his ROM. Mainly text messaging problems, but it may have been me. I did get it to work for about a day, then i switched carriers, so i cannot comment on VZW or how to make it work all the time but again it may have been me and my setup... just a heads up though... You may have issues.

Note, if you stay on VZW do not try a GSI ROM, they will not work, or the 5 i tried did not for me. SIM card not found issues for some reason. Just trying to save you some headache and and re-flashing with GSI's and stock.
 
  • Like
Reactions: translucentfocus

Top Liked Posts

  • There are no posts matching your filters.
  • 10
    Hi all!

    What is this?

    This is my mostly-working Razer Phone 2 Kernel and TWRP device tree!

    I've been reading threads where people are having issues compiling the Razer-provided source for the RP2 and figured I should post what I have so others can use it to help achieve a fully working source-built kernel.

    I'm also including a set of scripts to repack a Magisk-patched boot.img so you can iterate on building a new kernel rapidly, and am including a prebuilt magisk-patched boot.img with the custom kernel so we can QA other features while focusing on the known-broken things.

    Also also, I'm including an exfat kernel module (not built into kernel for now) so that can be tested too!

    Why is this mostly-working?

    I've tested many features on this kernel and so far the only feature *not* working is the microphone. (Audio recording, haven't tested in-call audio)
    This kernel is a mashup of Razer's source and a few other OSS repos from CAF - specifically the TFA98XX driver, and the audio-kernel repositories, so there's a bit of integration left to do to get all the audio features working.

    I also had to edit the defconfig to get the DTB to build, and have to build with some special flags to use the prebuilt DTB compiler (dtc) since the one included in the source isn't capable of compiling the FIH DTBs inside the Razer-provided source (correct me if I'm doing something wrong here, but this was how I ended up getting it to work).

    The kernel parameter skip_initramfs has also been renamed to skip__initramfs to break the silly bootloader skipping the ramdisk (and thereby breaking Magisk). This means you don't need to run Magisk's binary patch to rename that kernel argument to make Magisk or TWRP work.
    Keep in mind, though, that this means if you use this kernel with a 100% stock ramdisk, you'll only ever get recovery since new Android ramdisks only contain recovery! (Thanks Dees_Troy for the refresher course!)

    If you're familiar with the new audio-kernel CAF stuff, please let me know! I could use your assistance getting the microphone working.
    It seems like the microphone isn't working because of some mismatches between the in-kernel msm audio drivers and the Razer customized drivers in the vendor partition.

    I get errors like
    Code:
    [31269.485217] send_afe_cal_type cal_block not found!!
    in dmesg when attempting to record audio. This seems isolated to the q6afe drivers in the kernel (specifically here: https://github.com/thecubed/android_kernel_razer_sdm845/blob/master/techpack/audio/dsp/q6afe.c#L1593 ) not playing nice with the prebuilt snd_soc_sdm845 kernel module.

    Where do I get this?

    See here for the TWRP device tree (and detailed instructions on how to set up your build tree): https://github.com/thecubed/android_device_razer_cheryl2

    See here for just the kernel source: https://github.com/thecubed/android_kernel_razer_sdm845

    See here for a kernel-less boot.img skeleton that you can drop your newly minted kernel into and repack with mkbootimg: http://downloads.codefi.re/thecubed/aura2/kernel/magisk_custom_kernel_skel.tar.gz

    See here for a prebuilt boot.img with this custom kernel which includes Magisk: http://downloads.codefi.re/thecubed/aura2/kernel/boot_magisk_custom_9.img

    See here for an exfat module you can insmod from a booted phone with custom kernel to try mounting exfat SD cards: http://downloads.codefi.re/thecubed/aura2/kernel/exfat_module.tar.gz

    See here for a stock Magisk-patched boot.img for when you're done playing with this: http://downloads.codefi.re/thecubed/aura2/kernel/boot_magisk.img

    How do I use this?

    First off, this isn't for the average user. This kernel is *under development* and is not fully working yet. This means don't try this kernel on your mom's phone, your neighbor's phone, or any device that you aren't comfortable developing for.

    Secondly, to test this, you'll need to be oem unlocked. There's plenty of guides to do this, but be aware that it erases all data on your phone when doing so. You could try using adb backup first, but I didn't have much success with that.

    I'd suggest looking at the first link in the Where do I get this section and reading the README for the device tree as it'll have the most detailed instructions.

    The gist is you'll need to download a minimal OmniROM manifest, add some lines to a file in .repo/local_manifests/cheryl2.xml, and run mka kernel to get a kernel image.
    After that, you'll want to use mkbootimg to build a bootable magisk-patched boot.img, which you'll flash to your device with fastboot flash boot_X path/to/boot.img (where X is the active boot partition).

    Once you've got the Image.gz-dtb file from your $OUT/obj/KERNEL_OBJ/arch/arm64/boot/Image.gz-dtb you'll want to repack it into a magisk-patched boot.img

    Repacking the boot.img can be done with this command:
    Code:
    mkbootimg \
        --kernel Image.gz-dtb \
        --ramdisk boot_magisk.img-ramdisk.gz \
        --cmdline 'console=ttyMSM0,115200n8 earlycon=msm_geni_serial,0xA84000 androidboot.hardware=qcom androidboot.console=ttyMSM0 video=vfb:640x400,bpp=32,memsize=3072000 msm_rtb.filter=0x237 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 service_locator.enable=1 swiotlb=2048 androidboot.configfs=true androidboot.usbcontroller=a600000.dwc3 buildvariant=user' \
        --base 0x00000000 \
        --pagesize 4096 \
        --kernel_offset 0x00008000 \
        --ramdisk_offset 0x01000000 \
        --second_offset 0x00f00000 \
        --tags_offset 0x00000100 \
        --os_version 8.1.0 \
        --os_patch_level 2018-10 \
        -o ../boot_magisk_custom.img

    FAQ

    Does this have TWRP?
    No. This does not have TWRP. The device tree is for TWRP eventually, and to make compiling the kernel easier (since Android kernels don't like compiling outside of Android's makefile system anymore)​

    Does this have Magisk?
    Yes! It's "pre-patched" too, as long as you're using my prebuilt one above.​

    Do I need the custom kernel to use the exfat module?
    Yes. This is because the Razer stock kernel has module signing forced. I don't have Razer's kernel module signing key so I can't compile kernel modules for the stock kernel. My kernel has module signing set to allow mismatched signatures, so both the Razer modules in /vendor/lib/modules (required for sound) and my exfat module can coexist.​

    Why is exfat not compiled into the kernel?
    Laziness, primarily. Actually, in this case I just didn't want to add extra variables to testing the kernel. If adding exfat into the kernel directly causes other issues it could potentially derail my quest to get this kernel up to par with the stock kernel.​

    Why did other kernels not boot?
    Most likely due to incompatible audio-kernel revisions, or dtb issues. I'm not sure, but getting this kernel to compile required a bit more hacking than it should have.​

    Are you working on TWRP for Razer Phone 2?
    Yep. Look for another post once the kernel is good to go. I aim to get encryption support working too, unless Dees_Troy beats me to it ;)

    Is audio still not working?
    I'll update the post to remove the WIP tag and the section about audio as soon as it's working.​

    Is anything else not working?
    Feel free to download and test to let me know what else isn't working and I'll add it to the OP.​

    Acknowledgements

    Special thanks to Rashed97 and Dees_Troy for all their help.

    y u quote OP?
    9
    Status update: I'm working on getting everything building for 9.0, however while preparing my build trees I realized that audio-kernel source for 3110 isn't out, only 3040. I've posted in the other thread ( https://forum.xda-developers.com/showpost.php?p=79171840&postcount=24 ) to see if Razer can upload the MR1 3110 sources when they're not busy.

    My goal is to have a android-9.0-3110-MR1 branch in my Github once the source is available and a exfat kernel (using sdfat) shortly after. Then I'll start working on vold support for exfat.
    We're still QA'ing TWRP, and I'll let you know when I have a status update there.
    8
    Quick status update: Android 9.0 source is out, I'm going to switch my build targets (and update my phone) to 9.0 and start working through the exfat changes for 9.0 (no sense doing it twice when everyone's going to end up on 9.0 anyway).
    TWRP works on 8.1 with full decryption support thanks to Dees-Troy, but we're holding off releasing it until we test on 9.0 since we don't want to support multiple kernel versions for TWRP downloads (i.e. you'd need a twrp download for people still on 8.1, and one for people on 9.0, and then have to fix bugs for both).

    I'll let y'all all know when I've got more info later this weekend most likely.
    3
    Warrior1988: A2DP isn't in play here, and I'm using the stock /system and /vendor partitions, so any razer-customized tweaks are still present.

    Currently, I've been working on figuring out the codec mappings to make sure that when audio is being recorded in the custom kernel that all the appropriate routing is set to enable audio from the tfa98xx chip (NXP amplifier, apparently supports digital microphones too?) or the wcd934x codec.
    I'm not sure where the microphones are physically connected internally, so I'm working backwards from what gets enabled/disabled when recording audio in the stock kernel.

    So far I have observed a few things (pardon my potentially incorrect terminology, the whole linux ASOC sound layer is new to me):

    1. Audio in the stock and custom kernels is being captured by the mixer device called "SDM845 Media1", and it is capturing from SLIMBUS_0_TX input.
    Code:
    [Recording]
    aura:/sys/module # cat /sys/kernel/debug/asoc/sdm845-tavil-snd-card/SDM845\ Media1/state
    [SDM845 Media1 - Playback]
    State: new
    Backends:
     No active DSP links
    [SDM845 Media1 - Capture]
    State: start
    Hardware Params: Format = S16_LE, Channels = 1, Rate = 16000
    Backends:
    - SLIMBUS_0_TX
       State: start
       Hardware Params: Format = S16_LE, Channels = 1, Rate = 48000

    2. You can also see when recording and not recording that in both kernels the SLIMBUS_0_TX input is wired correctly to the right mixer:
    Code:
    [Not recording] 
    aura:/sys # cat ./kernel/debug/asoc/sdm845-tavil-snd-card/platform:soc:qcom,msm-pcm-routing/dapm/SLIMBUS_0_TX
    SLIMBUS_0_TX: Off  in 2 out 0 - R0(0x0) mask 0x1
     stream Slimbus Capture inactive
     out  "static" "SLIM0_UL_HL"
     in  "static" "Slimbus Capture"
     in  "static" "BE_IN"
    
    [Recording]
    aura:/sys # cat ./kernel/debug/asoc/sdm845-tavil-snd-card/platform:soc:qcom,msm-pcm-routing/dapm/SLIMBUS_0_TX
    SLIMBUS_0_TX: On  in 2 out 1 - R0(0x0) mask 0x1
     stream Slimbus Capture inactive
     out  "static" "SLIM0_UL_HL"
     out  "SLIM_0_TX" "MultiMedia1 Mixer"
     in  "static" "Slimbus Capture"
     in  "static" "BE_IN"

    Now that I've observed those things, I need to do a bit more research on how audio can get enabled/disabled on each of the chips that touch it.

    For instance, in the custom kernel, I noticed that during recording sounds the DMIC* lines on the second tfa98xx aren't enabled. I haven't checked in the stock kernel yet - but if the tfa98xx chip is providing mic bias, it's possible that everything is wired right for input but since the mic bias isn't on, the mic isn't powered and thus we get no sound.
    (Updated side note, why is Razer Phone 2 is using two TFA9888 chips? The tfa98xx.cnt firmware references TFA9892 which is mono only, too. I need to see a disassembly to figure out what chips it's actually using...)
    Code:
    aura:/sys # cat ./kernel/debug/asoc/sdm845-tavil-snd-card/codec:tfa98xx.4-0034/dapm/DMIC*
    DMIC1: Off  in 1 out 0
     out  "static" "AIF OUT"
    DMIC2: Off  in 1 out 0
     out  "static" "AIF OUT"
    DMIC3: Off  in 1 out 0
     out  "static" "AIF OUT"
    DMIC4: Off  in 1 out 0
     out  "static" "AIF OUT"
    aura:/sys # cat ./kernel/debug/asoc/sdm845-tavil-snd-card/codec:tfa98xx.4-0035/dapm/DMIC*
    DMIC1: Off  in 1 out 0
     out  "static" "AIF OUT"
     in  "static" "MIC BIAS1"
    DMIC2: Off  in 1 out 0
     out  "static" "AIF OUT"
    DMIC3: Off  in 1 out 0
     out  "static" "AIF OUT"
     in  "static" "MIC BIAS3"
    DMIC4: Off  in 1 out 0
     out  "static" "AIF OUT"
    Update: just noticed that this path doesn't exist on stock kernel. So the TFA driver I have doesn't match the one Razer is using. Interesting!

    Also, I'm not sure why SLIMBUS_2 playback/capture aren't shown as 'dynamic DAI' linked (the '(*)' means it's a dynamic DAI)... Probably not important though.
    Code:
    aura:/proc/asound # cat pcm
    00-00: MultiMedia1 (*) :  : playback 1 : capture 1
    00-01: MultiMedia2 (*) :  : playback 1 : capture 1
    00-02: VoiceMMode1 (*) :  : playback 1 : capture 1
    00-03: VoIP (*) :  : playback 1 : capture 1
    00-04: MultiMedia3 (*) :  : playback 1
    00-05: SLIMBUS_0 Hostless (*) :  : playback 1 : capture 1
    00-06: AFE-PROXY RX msm-stub-rx-6 :  : playback 1
    00-07: AFE-PROXY TX msm-stub-tx-7 :  : capture 1
    00-09: AUXPCM Hostless (*) :  : playback 1 : capture 1
    00-10: SLIMBUS_1 Hostless (*) :  : playback 1 : capture 1
    00-11: SLIMBUS_3 Hostless (*) :  : playback 1 : capture 1
    00-12: SLIMBUS_4 Hostless (*) :  : playback 1 : capture 1
    00-13: MultiMedia5 (*) :  : playback 1 : capture 1
    00-14: Listen 1 Audio Service (*) :  : capture 1
    00-16: MultiMedia10 (*) :  : playback 1 : capture 1
    00-17: MM_NOIRQ (*) :  : playback 1 : capture 1
    00-18: HDMI_RX_HOSTLESS (*) :  : playback 1
    00-19: VoiceMMode2 (*) :  : playback 1 : capture 1
    00-20: Listen 2 Audio Service (*) :  : capture 1
    00-21: Listen 3 Audio Service (*) :  : capture 1
    00-22: Listen 4 Audio Service (*) :  : capture 1
    00-23: Listen 5 Audio Service (*) :  : capture 1
    00-24: Listen 6 Audio Service (*) :  : capture 1
    00-25: Listen 7 Audio Service (*) :  : capture 1
    00-26: Listen 8 Audio Service (*) :  : capture 1
    00-27: MultiMedia9 (*) :  : playback 1 : capture 1
    00-33: MM_NOIRQ_2 (*) :  : playback 1 : capture 1
    00-34: SLIMBUS8_HOSTLESS Capture (*) :  : capture 1
    00-35: Slimbus4 Capture tavil_vifeedback-35 :  : capture 1
    00-36: SLIMBUS_2 Hostless Playback tavil_rx2-36 :  : playback 1
    00-37: SLIMBUS_2 Hostless Capture tavil_tx2-37 :  : capture 1
    00-38: MultiMedia6 (*) :  : playback 1 : capture 1
    00-39: USB Audio Hostless (*) :  : playback 1 : capture 1
    00-80: QUAT_MI2S_RX Hostless (*) :  : playback 1

    Meanwhile, we've reached out to Razer to see if they'll bless us with the full and complete kernel source this time ;)
    3
    Audio-kernel source is out! https://s3.amazonaws.com/cheryl-factory-images/audio-kernel-aura-2009.tar.gz
    I'll be rebuilding my kernel very soon and testing.