When I first acquired this machine, I installed Ubuntu 10.10, made minor tweaks, and had pretty much everything working with very little effort, except for some ridiculous hackery on the AMD/ATI supplied drivers which didn't recognize the graphics chip yet. For months, I had a great system that worked perfectly in Windows and Linux. After allowing normal Ubuntu system updates, either a kernel or driver modification stopped my suspend and hibernate from working anymore, and various networking issues crept up. Every subsequent installation of newer Ubuntu releases yielded no better behavior... the card reader driver was recognized from the start rather than having to be installed separately (a minor improvement), but nothing else really improved. After trying 12.04 LTS and encountering all the same problems, I got creative.
On the Ubuntu documentation page linked at the top here, I noticed that the trick with forcing Network Boot as first option in the BIOS was to remedy a problem that happens under a few combined factors:
- System is running a newer Linux Kernel
- Machine is connecting to a wireless network
- Ethernet jack is unplugged
- Alternative solution to prevent the freeze involves blacklisting the Ethernet driver (atl1c)
- The blacklisting of the Ethernet driver also prevents freezing right after system resume from hibernation
So, my guess was that our Ethernet driver, atl1c, could be the real culprit for this whole problem. I started hunting for atl1c replacements, and found the alx driver project. The alx driver makes use of much more recent code produced by QualComm for the Atheros chips, including our AR8152.
So, I went hunting for the best way to acquire and install the new alx driver and found the instructions here and the most recent release here. I needed to do a little more work to effectively blacklist atl1c, via these Debian blacklisting instructions. Finally, I needed to follow these instructions to enable hibernation as an OS option, because Ubuntu introduced a policy blocking it in 12.04.
I can now hibernate my AO522 while leaving the ethernet driver enabled, and Network Boot can be the last item in the BIOS boot sequence.
Here's the combined instructions to make the corrections on a fresh Ubuntu 12.04 installation.
Extract the file in your home directory and open a terminal into the new directory that was created.
Issue these commands:sudo rmmod atl1csudo echo blacklist atl1c > /etc/modprobe.d/blacklist-atl1c.confsudo depmod -aesudo update-initramfs -u./scripts/driver-select alxmakesudo make install
At this point, you should be using the new drivers, the old drivers should be banished. Now 12.04 users need to write a policy file to enable hibernation in the various power menus, etc.
With root permissions, author
/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla with the following content:
[Re-enable hibernate by default]
A reboot may be required after placing the file. Now you can hibernate as well as boot without setting Network Boot as the first item in the BIOS Boot Sequence!