USB-C audio not working, even w/ chromebook-usbc.service

In the year that I’ve been running Debian on the device, one USB-C port has been completely unresponsive, while the other port can charge the laptop, but fails to recognize USB-C earbuds.

I know the earbuds aren’t the issue because they run on my Debian Desktop w/o issue, and when I plug them into my chrultrabook, the earphones recognize that they are connected as I can toggle active noise canceling on/off.

I followed instructions from another thread on this board to try the service file, and the hack worked for a day or two, but since then has been broadly ineffective.

systemd Status

Oct 24 14:43:21 chrultrabook systemd[1]: Finished chromebook-usbc.service - Enable USB-C on chromebook.
░░ Subject: A start job for unit chromebook-usbc.service has finished successfully
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░ 
░░ A start job for unit chromebook-usbc.service has finished successfully.
░░ 
░░ The job identifier is 178.
$ sysz
● chromebook-usbc.service - Enable USB-C on chromebook
     Loaded: loaded (/etc/systemd/system/chromebook-usbc.service; enabled; preset: enabled)
     Active: active (exited) since Thu 2024-10-24 14:43:21 CDT; 1h 1min ago
    Process: 1193 ExecStart=/sbin/modprobe -a cros-ec-typec (code=exited, status=0/SUCCESS)
   Main PID: 1193 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Service File:

[Unit]
Description=Enable USB-C on chromebook

[Service]
Type=oneshot
RemainAfterExit=yes
# ExecStartPre=/sbin/modprobe -r -a cros-ec-typec intel-pmc-mux
# ExecStart=/sbin/modprobe -a intel-pmc-mux cros-ec-typec
# ExecStartPre=/bin/sleep 2
ExecStart=/sbin/modprobe -a cros-ec-typec

[Install]
WantedBy=multi-user.target

System Info

Operating System: Debian GNU/Linux 12
KDE Plasma Version: 5.27.5
KDE Frameworks Version: 5.103.0
Qt Version: 5.15.8
Kernel Version: 6.1.0-26-amd64 (64-bit)
Graphics Platform: Wayland
Processors: 8 × 11th Gen Intel® Core™ i3-1125G4 @ 2.00GHz
Memory: 7.6 GiB of RAM
Graphics Processor: Mesa Intel® UHD Graphics
Manufacturer: Google
Product Name: Eldrid
System Version: rev3

(I also used the OG chromebook-usbc-service file, but that never worked for me.)

Spent about an hour troubleshooting w/ Claude 3.5 Sonnet. Here’s the summary:

Device: Google Eldrid (Tiger Lake) running Debian with MrChromebox firmware 4.20.1
Issue: USB-C port functionality partially working (power delivery works on one port, but no audio via USB-C earbuds)

Key findings:

  • ACPI devices present (GOOG0014:00 for USB-C, GOOG0003:00 for PD)
  • Core issue: Chrome EC (Embedded Controller) not properly recognized
  • Error: “cros-ec-typec GOOG0014:00: couldn’t find parent EC device”
  • Related modules load but don’t bind: cros_ec, chromeos_acpi, cros_ec_sysfs
  • ACPI modalias shows as “acpi:GOOG0004:”
  • Power delivery working suggests basic EC functionality exists
  • Running MrChromebox firmware may affect how EC interface is exposed

Relevant hardware info:
Intel Tiger Lake-LP Thunderbolt 4 USB Controller (rev 01)
Intel Tiger Lake-LP USB 3.2 Gen 2x1 xHCI Host Controller (rev 20)

There is a non-zero chance that I bricked it.

Currently, it locks up every time I try to log in, and when I enter terminal mode using control + Alt + F-key, it only shows standard output printing errors, and doesn’t allow for standard input.

I started going on a path of using a live ISO to work on things, but core boots just hangs when I connect a usb-c/usb-a media drive. I’m guessing That they issues with the USB not working correctly make booting an ISO a moot point.

I have tried using core boot to load grub, but when I select grub x64.efi, it just boots normally. I have tried holding the shift key as well as the escape key as well as space bar but to no avail.

Let me know if anyone has any suggestions, I’m not opposed to eventually wiping things as a last resort but based on the limited amount of options, I’m not even sure how I do that.

Woof.

Turns out my Chromebook didn’t like my USB-to-SD reader, but a normal USB stick did the trick. I’m back up and running (fresh install) Going to give this hack mentioned by @Ghost on GitHub:

On 4.20 usb flash drives and external hard drives are now showing up on boot when connected to the usb c ports. The right port seems to support full booting. The left port will boot but then stop reading device.

For Fedora I am using a workaround that was shared in the chrultrabook discord. It involves unloading 2 kernel modules and then reloading them in a specific order.

rmmod cros_ec_typec
rmmod intel_pmc_mux
modprobe intel_pmc_mux
modprobe cros_ec_typec

Also, going to try and upgrade my Mr Chromebox firmware as well

Putting this on the backburner again. Grabbed a cheap usb-C → usb-A converter from eBay to hold me over indefinitely.