Suspend fixed in C720/Peppy ROM

As the name implies, suspend is fixed in the C720/Peppy ROM’s. Turns out I had forgotten to conditionalise/remove something from the board’s DSDT, which I didn’t forget for Falco/HP Chromebook 14.

Additionally, I have updated all the other Haswell Chromebook ROM’s to make sure the DSDT is suitable in those.

Jeltka has also had i915 frame buffer support added, so even if something is wrong with the graphics ID/ROM, you can still easily get the display to work. There’s probably something else in there which escapes me, but that seems like enough for the moment.

New ROM releases.

IMG_20140818_230211These contain an updated version of Jeltka. CentOS and Fedora installs now work wirelessly, I’ve added Arch support, and also rewritten the script from scratch. The script will semi-automatically configure the wireless connection – you just have to input SSID and PSK.

On the Linux side, I’ve put ext utils in, and enabled USB mass storage, so Jeltka can act as a rudimentary embedded rescue, getting files off or even partition images, as long as you stick to EXT2/3/4 for your FS.

I’ve managed to do all this and keep it within the original 2.88MB limit, so there’s still over 500k to play with. Suggestions welcome as long as it doesn’t mean SSL support, which balloons the image over the 3.44MB limit as is.

Running should be self-explanatory, except you should run jeltka.sh once logged in. Go get ‘em.

https://johnlewis.ie/custom-chromebook-firmware/rom-download/

Making the touchpad work on a HP Pavilion Chromebook in Ubuntu 14.04

First you have to add the following to /etc/rc.local before “exit 0″:

modprobe -r chromeos_laptop
modprobe i2c-i801
modprobe chromeos_laptop

Then copy /usr/share/X11/xorg.conf.d/50-synaptics.conf to /etc/X11/xorg.conf.d/51-synaptics.conf and edit it adding the following lines to the inputclass section named “touchpad catchall”:

 Option "FingerHigh" "5"
Option "FingerLow" "5"

Reboot, and there you have it!

Extracting the shell-ball ROM using a ChromeOS image

As an example I’m performing this on Fedora 20. I assume that you’re doing it from your home directory.

1. Download the linux script for downloading ChromeOS images. From the cli type/paste:

wget https://dl.google.com/dl/edgedl/chromeos/recovery/linux_recovery.sh

2. Make the script executable so it will run:

chmod +x linux_recovery.sh

3. Run the script:

./linux_recovery.sh

4. Type the model name of the Chromebook you’re trying to get the ROM for e.g. “HP Chromebook 14″, then type the number of the corresponding image e.g. “8″. Once the file has downloaded, the script will attempt to extract it with a view to writing to USB, however, the tmp mount in Fedora doesn’t get allocated enough space and you get the following error:

chromeos_5712.88.0_falco_recovery_stable-channel_mp-v2.bin: write error (disk full?). Continue? (y/n/^C) 

To which I say “n”.

5. Remove the partially extracted file, or you will get space errors:

rm /tmp/tmp.crosrec/*.bin

6. Note the name of the file above, as it will be needed for subsequent commands. Unzip the file into your home directory like so, adding “.zip” onto the end of the filename you noted above:

unzip /tmp/tmp.crosrec/chromeos_5712.88.0_falco_recovery_stable-channel_mp-v2.bin.zip

7. Use kpartx to make sense of the image’s partition structure. First of all make sure it’s installed. This is also a good time to install another dependency which will be needed later (specifically by the extract script):

sudo yum install kpartx sharutils

8. Run kpartx to add a mountable mapping to each of it’s partitions in /dev/mapper:

sudo kpartx -a chromeos_5712.88.0_falco_recovery_stable-channel_mp-v2.bin

9. The partition we want to get at is the system partition, which is now mapped to /dev/mapper/loop0p3 however, we have to mount it read-only otherwise mounting will fail:

sudo mount -o ro /dev/mapper/loop0p3 /mnt

10. Create a directory for the extracted files (you don’t want them messing up your home directory):

mkdir shellball

11. Do the extraction:

/mnt/usr/sbin/chromeos-firmwareupdate --sb_extract shellball

12. Download statically linked flashrom and flash extracted BIOS (only if you are *SURE* you don’t need to use the LEGACY boot at this time, as shellball ROM doesn’t have the flags needed set):

wget --no-check-certificate https://johnlewis.ie/flashrom &&  sudo ./flashrom -w shellball/bios.bin

 

HP Chromebook 14 ROM updated

There is now an updated ROM for the HP Chromebook 14 which will repeatedly go in and out of suspend in Fedora without issue. The ROM has had it’s ChromeOS/TPM support  removed with direction from Duncan Laurie. The only other requirement is that you have EHCI/XHCI unbind/bind as per the Arch Wiki. Here is my /usr/lib/systemd/system-sleep/cros-suspend.sh

#!/bin/bash
case $1/$2 in
pre/*)
# Unbind ehci.
echo -n "0000:00:1d.0" | tee /sys/bus/pci/drivers/ehci-pci/unbind
# Unbind xhci.
echo -n "0000:00:14.0" | tee /sys/bus/pci/drivers/xhci_hcd/unbind
rmmod cyapa
;;
post/*)
# Bind ehci.
echo -n "0000:00:1d.0" | tee /sys/bus/pci/drivers/ehci-pci/bind
# Bind xhci.
echo -n "0000:00:14.0" | tee /sys/bus/pci/drivers/xhci_hcd/bind
modprobe cyapa
;;
esac

Latest ROM’s

There are now ROM’s for the Pixel (contributed by Dominik), ASUS Chromebox (contributed by Matt Devillier), Lenovo X131e, and I hope to have a confirmed working Samsung Chromebox ROM in the next day or so. See the ROM download page, above!

Working custom coreboot ROM on HP Chromebook 14!

Because I am so hopelessly addicted to hacking Chromebooks, and because the ASUS Chromebook users who couldn’t boot USB got me into hacking mode, I have *finally* managed to get a working custom ROM on the HP Chromebook 14.

As noted, it breaks power-saving even more than it was already. But, on the plus side, it boots a few seconds faster, and I think it runs a bit faster too (but that could be car wash syndrome either).

Without further ado! Please see the pre-built firmware page!

ASUS Chromebox Owners Rejoice!

I have a fix for the nasty bug which stops you booting from USB in SeaBIOS on the ASUS Chromebox. It’s an updated CBFS filesystem for the RW_LEGACY slot of the firmware, which contains an updated version of SeaBIOS. Simply download the file and apply it in the Crosh shell like so (you don’t need hardware write-protect disabled)

sudo flashrom -w -i RW_LEGACY:asus-chromebox-SeaBIOS-new.bin

http://johnlewis.ie/asus-chromebox-SeaBIOS-new.bin

md5sum dc200444a02eafcce0486fedf86bf4f1

Beer me on your way out!

Another General Notice

I’ve mentioned and murmured about this from time to time, but I feel there’s no point trying to compile coreboot for newer (> Pixel) Chromebooks, as it won’t give you significant, extra functionality. Making it official here. Have unsubscribed from the coreboot mailing list. Happy to help people that want it (and ask nicely) but I’m scaling back my efforts forthwith.

Linux & custom Chromebook firmware