How to Get Your AMD Graphics, Sound & Other Drivers to Work in Linux on Your Laptop
With the purchase of my latest computer, installing Linux turned into a nightmare from Hell. The graphics drivers are probably the biggest issue that anyone with a newer computer will run into when installing Linux. AMD and NVIDIA are the dominant ones on the market, both of which have awful support.
Not only do graphics give us trouble, but anyone with a switchable power laptop (when you can use just AC without battery, with the battery plugged in), HDMI, audio in and out, or anyone with any kind of wonky hardware will be likely scared off from the computer and from Linux until the end of time.
From first hand experience, and a fiery, passionate love for Linux, I almost found myself running scared until I hacked together these lovely fixes that we will be going over today. As far as I know, I'm the only person on the planet running an Alienware M18x without any hardware issues under Linux with AMD graphics cards, because only failed documention exists.
Let's look at the issues that we will encounter, depending on which graphics driver the system is using.
- A laptop with any of the issues described below (Alienware, AsusG7x, Vaio, etc)
Alsa does not work
When you have alsa id configured properly, yet still your computer produces no sound, it's because the computer incorrectly probes the hardware. This is likely caused by HDMI in and out on newer laptops. In order to fix this, we need to force the device in alsa.conf.
- Edit the alsa.conf file.
sudo nano /etc/modprobe.d/alsa.conf
- Add specified hardware information to the configuration file.
options snd-pcsp index=-2
alias snd-card-0 snd-hda-intel
alias sound-slot-0 snd-hda-intel
options snd-hda-intel model=alienware (change depending on brand)
options snd-hda-intel enable_msi=1
Motherboard speaker beeps
When using auto-completion, or backspacing in a program, your motherboard speaker beeps. This is loud, and annoying, and even if the module is removed and the channel is muted, you will still hear beeps. Here is a work-around.
- Edit your modprobe.conf file.
sudo nano /etc/modprobe.d/modprobe.conf
- Add this line to make it not load the module on boot.
- Open up alsa and mute the beep channel by pressing "M".
Opensource drivers for AMD
This driver makes the GPU(s) at an extremely high load by default, using much more power and shortening the life of your hardware. It also has terrible colors and 3d rendering when compared to the proprietary catalyst drivers.
- Mount the debugfs.
sudo mount -t debugfs none /sys/kernel/debug
- Append this line to /etc/fstab.
debugfs /sys/kernel/debug debugfs defaults 0 0
- Look at your current clock speeds and load on your GPU.
- Now, echo a low power value as root user to the card(s):
echo low > /sys/class/drm/card0/device/power_profile
And if you have two cards:
echo low > /sys/class/drm/card1/device/power_profile
- These two lines can be added to the end of /etc/rc.local for a permanent change. Simply change "low" to "high" or "mid" for different power levels.
Proprietary drivers for AMD
The proprietary drivers seem to work better in nearly every area, except you may notice that it's become rather impossible to watch videos on your media player, or recieve video on Skype. This is due to a driver bug with the xv video driver. To fix it, we just need to change which driver our media playback program is using. I use mplayer in this example.
- Open up mplayer.
- Click Options > Preferences > Video.
- Click the dropdown with xv currently selected, and change it to literally any other one. I use gl.
If you've got any more hardware issues or fixes, post them below or to the community corkboard! Let's get our funky hardware tearing it up in Linux.
Be a Part of Null Byte!