-
Notifications
You must be signed in to change notification settings - Fork 8
Enabling sound on the HP Omnibook X14, Lenovo Thinkbook 16
Having a laptop with Linux is way more fun with working audio. Can confirm. After a lot of hesitation I finally managed to enable audio via internal speakers on the HP Omnibook X14. which is nice 🎶 I used the setup from the Thinkpad T14s and referenced it where it seems to make sense. This kind of setup also works on other Snapdragon X 2-speaker designs. I have successfully replicated it on the Lenovo ThinkBook 16. It is worth taking a look at the PRs in audioreach-topology and alsa-ucm-conf.
The WSA8884 amplifiers have some SOA config which is missing on Linux, so it is possible to fry your built-in speakers. Beware. Therefore, on Ubuntu Concept X1E kernels, you additionally need to set snd_soc_x1e80100.i_accept_the_danger as boot parameter in the kernel command line.
As a cautionary tale, one fellow adventurer managed to kill some chip by playing around with alsamixer, resulting in a constant power drain. It needed repairs. You have been warned.
- new-ish Linux kernel, anything from 6.13 on should do. I did my bringup with 6.14-rc7
- a topology file from the audioreach repository
- updated alsa ucm config files
- some setup symlinks
The files required are not yet upstream, I hope they will eventually be there.
The topology file must be built with cmake. Fortunately it is quite easy, as documented by @joske.
git clone https://github.com/jglathe/audioreach-topology.git
cd audioreach-topology
git checkout jg/hp-omnibook-x14
cmake .
cmake --build .
This should do without errors. The resulting .tplg.bin file should be copied over to the right location in the firmware directory.
sudo cp qcom/x1e80100/hp/omnibook-x14/X1E80100-HP-OMNIBOOK-X14-tplg.bin /lib/firmware/updates/qcom/x1e80100/
There is another possible setup where you place the .tplg.bin file into the firmware directory where all other device-specific firmware is located, and creating a symlink.
The alsa ucm setup is also based on the Thinkpad T14s setup, only the detection of the device has been added. It doesn't need to be built, though. Only copied over. Since it can be that your version of alsa-ucm-conf is older, I recommend installing the newest one first. We need the Qualcomm/x1e80100/ and the codecs/wsa884x/ paths populated. Version 1.2.12 seems to have it.
git clone https://github.com/jglathe/alsa-ucm-conf.git
git checkout jg/hp-omnibook-x14
sudo cp ucm2/Qualcomm/x1e80100/* /usr/share/alsa/ucm2/Qualcomm/x1e80100/
cd /usr/share/alsa/ucm2/conf.d/x1e80100/
sudo ln -s ../../Qualcomm/x1e80100/x1e80100.conf x1e80100.conf
As described by @joske the gain(?) on the speaker volume is way too high (default is 84). After some experimenting I settled for the value of 5, too. I put this into a separate commit. You should copy this over to the qcom-lpass directory.
<still in alsa-ucm-conf repository>
git checkout jg/wsa8884-pa
sudo cp ucm2/codecs/qcom-lpass/wsa-macro/init.conf /usr/share/alsa/ucm2/codecs/qcom-lpass/wsa-macro/
After these steps, a reboot should give you sound.
I noticed dropouts / metallic sound after a while, issues seem to center around firefox.