Understanding Linux #
Kernel - Low level drivers that interacts with hardware
Firmware Stuff #
*Firmware Write Protect Firmware is stored on a special SPI flash chip and has a special register that sets the device to read-only. This change be changed by special hardware and software measures.
The write protection of these chips are dependent on grounding a WP pin on the flash chip.
Specific to chromebook models after 2017+ (CR50 models), the state of the WP pin is controlled by the CR50 with close-case debugging (CCD). CCD requires a special USB-C SuzyQable.
So we want to be able to control the WP with CR50 on our Pixelbook - Google doc about it here
Firmware updates #
Questions #
- UEFI - Unified Extensible Firmware Interface?
- What it is to SeaBIOS?
Flashing new Firmware #
For details on how to do this, go here… - Github Instructions
- Open up the CCD, this require the PB to be in Developer Mode
gsctool -a --ccd_open
- will open up the CCD and allow us to use the cable
Understand Implementation #
SuzyQables is a one-direction USB-A to USB-C cable that allow us to do CCD (close case debugging) More details here
Getting ChromiumOS Kernel #
This will allow us to get the screen backlight to work, touchpad, other stuff to work…
ChromeOS has it’s own kernel, and it has been compiled for ChromeOS. If we want to use the kernel created by Google, we need to access ChromiumOS source and compile it ourselves.
*Compilation of Kernel Source - .config
folder controls hundreds of
options; which drivers and functionality to include, etc. - modify this
to ’tweak’ ChromeOS kernel for our Linux
Installation Notes on Pixelbook #
Issues to Note on Manjaro #
-
someone manually installed Arch on pixelbook - https://gist.github.com/daemonp/ecead946317b175e3b54731a513efe94
-
touchpad issue - fix to touchpad issue
- Did not work
-
Added a new ‘packages-Archlinux.yml’ to github file
- removed a bunch of packages that did not exist on Archlinux
-
installing apps
-
A good place to start with Arch to troubleshoot laptop problems
-
Bootloader Installation Hours were spent trying to use grub, 15 minutes and syslinux is working like a charm. If you want/need to use grub good luck!
-
Update grub
-
manually install and all its dependencies
-
https://aur.archlinux.org/packages/xf86-input-cmt/
- read comments to get patch to work - https://aur.archlinux.org/packages/libgestures/
-
https://aur.archlinux.org/packages/xf86-input-cmt/
-
what about this wiki
-
Install GalliumOS Kernel on other distribution
-
building the kernel from source
-
Where will your configuration file to build come from?
-
https://forum.manjaro.org/t/howto-compile-own-kernel-for-testing-playing-and-learning/33764
*Current version of ChromeOS Kernel -
release-R78-12499.B-chromeos-4.4
-
the eve-kernel-branch
is outdated - release-R75-12105.B-chromeos-4.4
*pacman stuff that you want for PB (ac) # pacman -S base-devel # Everyone wants this package (ac) # pacman -S sudo # This one too (ac) # pacman -S xorg-server xorg-xinit xorg-utils xorg-xserver-utils # Install Xorg (ac) # pacman -S xf86-video-intel # The Chromebook has an Intel graphic card (ac) # pacman -S xf86-input-synaptics # There is a touchpad
-
install
asp
-
getting brightness to work
-
good starting point for chromeos devices - https://wiki.archlinux.org/index.php/Chrome%5FOS%5Fdevices
*SUCCESS STORY!? manjaro forum
BRIGHTNESS WORK WITHOUT MODIFICATIONS!!! #
xrandr -q | grep connected
xrandr --output eDP1 --brightness 0.5
THIS IS ONLY a software modification -
https://askubuntu.com/questions/149054/how-to-change-lcd-brightness-from-command-line-or-via-script
-
The actual hardware problem is that the PWM that is used to control the
backlight is disconnected - the pixelbook only use the native Display
port configuration data (DPCP) to controller the backlight - enabling
compat.linuxkpi.i915_enable_dpcd_backlight
“1”= in
/boot/loader.conf
; - NOT for arch. the above instruction is for
freeBSD - addd options i915 enable_dpcd_backlight=1
in
/etc/modprobe.d/i915.conf
- the panel reports that it supports both DPCD backlight and a direct PWM line (which is true);
- Google/Quanta/whoever did not connect the PWM line;
- (the panel is not aware of that);
- the i915 driver prefers the PWM line when it’s reported as available.
read a little more about intel here intel i915
did the patch to kernel addd options i915 enable_dpcd_backlight=1
in
/etc/modprobe.d/i915.conf
- Here is the Patch!!
resources #
https://unrelenting.technology/articles/FreeBSD-and-custom-firmware-on-the-Google-Pixelbook
- looks like there are some notes here on arch wiki about laptop with brightness issue
Kernel Stuff #
-
getting the current manchine config
zcat /proc/config.gz > ~/Downloads/recovery/myconfig
-
After
make oldconfig make -j15 make -j15 modules make modules_install
- copy
vmlinux
to/boot
folder and runsudo update-grub
- copy
-
or patch the kernel to fix the drivers or manually add a driver
- patch, the
make
andmake modules_install
- A Little wiki
- how to compile and install a kernel
- The compiled kernel is sitting in
./arch/x86_64/
* RESOURCES *
- patch, the
touchpad stuff #
-
xorg-server-dev
= =xorg-server-devel
for arch -
installed
xf86-input-cmt
- this is the chrome multitouch
- copied the conf files from https://github.com/yusefnapora/pixelbook-linux/tree/master/ansible/roles/eve-touchpad
- restarted and things started working
- ran
libinput debug-events
to figure out why mouse cursor was jumping- found out it was the kernel, 4.14 worked
-
Inverted scrolling
Option "Natural Scrolling" "1"
in/usr/share/X11/xorg.conf.d/*touchpad
- run
xinput --list
,xinput disable IDHERE
,xinput enable IDHERE
-
touchpad jumping with libinput
-
dont want to use wayland, use xf86-input-libinput
-
also install xorg-xinput for setting
-
with this we can use device quirks to change the pressure sensitivity of the touchpad - at the end
/etc/libinput/local-overrides.quirks
[Touchpad pressure override] MatchUdevType=touchpad MatchName=*ACPI0C50:00 18D1:5028 AttrPressureRange=5:3
-
Sound stuff #
Bootloader Stuff #
- Updating bootloader
- used
manjaro-chroot -a
to get the disk to be mounted and run at root - NOTE you will get “Boot failed. EFI USB device” if the mouse is plugged in
-
First Try To build kernel -
sticking to this as much as possible
-
checked out Release78 - 4.4 chromeos Kernel
- get the lastest recovery from the repository -
https://www.reddit.com/r/chromeos/comments/5c5ggd/manually%5Fdownload%5Fchrome%5Fos%5Fimages%5Ffor%5Frecovery/
- This will show you the path to download a config file. and in the config file, it gives you the recovery image
- get the lastest recovery from the repository -
https://www.reddit.com/r/chromeos/comments/5c5ggd/manually%5Fdownload%5Fchrome%5Fos%5Fimages%5Ffor%5Frecovery/
-
Installed
-
multipath-tools
on Arch to getkpartx
tool- has to run with SUDO!!
-
device-mapper
-
copied script from the main linux repo for
extract-ikconfig
-
used
manjaro setting manager
to change the machine kernel version to 4.4 to get the config file
-
-
- Notes to go back to
- inxi -Fxxz will show us the sytem configurations
- use `manjaro setting manager` to change kernel
- Loading modules into kernel
- Using [Modprobe](https://wiki.archlinux.org/index.php/Kernel%5Fmodule#Using%5Ffiles%5Fin%5F/etc/modprobe.d/)
- kernel can be recompiled with arch packaging
- [Arch build system for the Arch Kernel](https://wiki.archlinux.org/index.php/Kernel/Arch%5FBuild%5FSystem)
- using
[Quilt to select and maintain patches](http://www.shakthimaan.com/downloads/glv/quilt-tutorial/quilt-doc.pdf)
OTHER ways?? #
- freeBSD guy hacking his way through - https://unrelenting.technology/articles/FreeBSD-and-custom-firmware-on-the-Google-Pixelbook
Fixing Audio #
- install audio manually following the ansible script
- all the libraries for audio is most likely needed, looked at Fedora packages that is
possible new solution https://github.com/yusefnapora/pixelbook-linux/issues/60
Software to install on Manjaro #
- Install for manjaro
-
install Pamac - much better package manager
-
install timeshift - for snapshot of system
-
edit grub timeout to 0 seconds for faster boot
- need to run update-grub
-
Reduce swappiness
-
install firewall
-
lshw
to get hardware info and firmware
To modify after backlight, mouse and sounds are working #
FLASHING Other Issues #
These are issues others ran into while flashing their Pixelbook
-
SuzyQ cable USB-C is NOT reversible, that is does not communicate the same when flipped 180 degrees
- CR50 Firmware too old for CCD, Fix here
-
If cannot back up stock firmware, do it manually -
sudo flashrom -r ~/Downloads/stock-firmware-pixelbook.rom
- Storage media such has SD card, USB-A drive, might not all work. If it doesn’t work, try a different medium.
-
When trying to recover ChromeOS back to Pixelbook, USB might not be detected -> reboot multiple times, and try again
-
Using yusefnapora/pixelbook-linux method on Github might come across error with missing
rsync
and directories - manually install rsync, and manually create directoriessudo mkdir /etc/libinput/
- install rsync
-
After installing if the screen rotate uncontrollably. get to the terminal,
sudo apt-get remove iio-sensor-proxy
disables package that talks to the sensor -
If stuck on 2.4Ghz wifi,
sudo iw reg set US
- allows 5Ghz band to run -
If touchpad does not work, try uninstall/remove
sudo apt-get remove --purge xserver-xorg-input-synaptics
and reinstallsudo apt-get install xserver-xorg-input-synaptics
Other Resources #
- Understand your firmware - https://wiki.mrchromebox.tech/Firmware%5FWrite%5FProtect
*Tools for the Job - chrx
installs Linux onto Chromebook for dual
boot,
Read more here
- Linux
support for Pixelbook i7 -
https://github.com/EmbeddedAndroid/linux-eve
- Hacking the ChromeOS
Kernel for Pixelbook -
https://github.com/megabytefisher/eve-linux-hacks
- including how to
compile new kernels - Mr.Chromebox Firmware Utility Script -
https://mrchromebox.tech/#fwscript
*Reddit posts - Pixelbook with dual boot