├── .gitignore ├── README.md ├── files ├── 61-eve-keyboard.hwdb ├── 61-eve-sensor.hwdb ├── 9d71-GOOGLE-EVEMAX-0-tplg.bin ├── HiFi.conf ├── dsmparam.bin ├── dsp_fw_C75061F3-F2B2-4DCC-8F9F-82ABB4131E66.bin ├── dsp_lib_dsm_core_spt_release.bin ├── kbl-r5514-5663-.conf ├── pixelbook-alsa_1.0-1_amd64.deb ├── pixelbook-keybd_1.0-1_amd64.deb └── pixelbook-sensor_1.0-1_amd64.deb ├── playbook.yaml └── run-ansible.sh /.gitignore: -------------------------------------------------------------------------------- 1 | run-ansible-in-fedora.sh 2 | run-ansible-in-debian.sh 3 | run-ansible-in-ubuntu.sh -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | FYI THIS DOES NOT WORK ON ANY DISTRIBUTION OR SETUP USING A KERNEL GREATER THAN 6.0! (I BELIEVE 6.1.1 IS THE LAST WORKING KERNEL) UNTIL THEN ALL PIXELBOOK USERS SHOULD STAY ON KERNEL 6.0 OR LOWER. ALL FEATURES WILL BE WORKING NATIVELY EXCEPT THE AUDIO, THE ACCELEROMETER AND THE KEYBOARD TOP ROW... THIS GITHUB OUTLINES THOSE FIXES. FOR DISTRIBUTIONS WITH THE LTS KERNEL (5.15) EXPECT THAT THE BACKLIGHT WILL NOT WORK OUT OF THE BOX. KERNEL 5.17 AND ABOVE HAS FIXED THIS ISSUE. 2 | 3 | Installing ALSA drivers and configuration files for the Pixelbook (Eve) Under Linux: 4 | 5 | Copy the files to the respective locations according to the paths listed below: 6 | 7 | ``` 8 | /lib/firmware/9d71-GOOGLE-EVEMAX-0-tplg.bin 9 | 10 | /lib/firmware/dsp_lib_dsm_core_spt_release.bin 11 | 12 | /lib/firmware/intel/dsp_fw_C75061F3-F2B2-4DCC-8F9F-82ABB4131E66.bin 13 | 14 | /opt/google/dsm/dsmparam.bin 15 | 16 | /usr/share/alsa/ucm2/Intel/kbl-r5514-5663-/Hifi.conf 17 | 18 | /usr/share/alsa/ucm2/Intel/kbl-r5514-5663-/kbl-r5514-5663-.conf 19 | 20 | /usr/share/alsa/ucm2/conf.d/kbl-r5514-5663-/Hifi.conf (or create a symbolic link to the file in the intel folder) 21 | 22 | /usr/share/alsa/ucm2/conf.d/kbl-r5514-5663-/kbl-r5514-5663-.conf (or create a symbolic link to the file in the intel folder) 23 | 24 | /usr/lib/udev/hwdb.d/61-eve-sensor.hwdb 25 | 26 | /usr/lib/udev/hwdb.d/61-eve-keyboard.hwdb 27 | ``` 28 | 29 | After installation of the files run 30 | 31 | ``` 32 | systemd-hwdb update 33 | ``` 34 | 35 | This will update th hwdb to allow the accelerometer and keyboard to work correctly 36 | 37 | 38 | 39 | The audio drivers WILL NOT work with pipewire. They will give sound but its mostly slow playing and covered by white noise (you can try it if you like to see what im talking about) For this reason we must replace pipewire with pulseaudio. Of note, HDMI/DP Out is not working on Ubuntu 22.10 or later nor is it working under fedora systems but it does work with Ubuntu 22.04 and Linux Mint. (Those OSes have pulseaudio natively installed and maybe their configurations allow for HDMI/DP out to work but at this point I have not figured out how to get it working on newer versions where pulseaudio needs installation. I have also tried it under Arch. HDMI/DP does not work even with Pulseaudio natively installed. 40 | 41 | 42 | TO INSTALL PULSEAUDIO ON UBUNTU 22.10 OR LATER (May also be applicable to Pop!OS) 43 | 44 | Run the following commands: 45 | 46 | ``` 47 | sudo apt install pipewire-media-session (this will remove wireplumber) 48 | 49 | sudo apt install pulseaudio 50 | 51 | sudo apt remove pipewire-pulse (this will stop pipewire from attempting to run its daemon and give way to pulseaudio) 52 | 53 | sudo apt remove pipewire-alsa 54 | ``` 55 | 56 | TO INSTALL PULSEAUDIO ON FEDORA 57 | 58 | ``` 59 | sudo dnf swap --allowerasing pipewire-pulseaudio pulseaudio 60 | 61 | sudo dnf swap wireplumber pipewire-media-session 62 | 63 | sudo dnf swap pipewire-jack-audio-connection-kit jack-audio-connection-kit 64 | 65 | sudo dnf remove pipewire-alsa 66 | ``` 67 | -------------------------------------------------------------------------------- /files/61-eve-keyboard.hwdb: -------------------------------------------------------------------------------- 1 | # Copyright 2017 The Chromium OS Authors. All rights reserved. 2 | # Distributed under the terms of the GNU General Public License v2 3 | # 4 | # Special keyboard mapping for Eve project. The keyboard has extra 5 | # "Assistant" and "Hamburger" keys. 6 | # 7 | evdev:atkbd:dmi:bvn*:bvr*:bd*:svnGoogle:pnEve:pvr* 8 | KEYBOARD_KEY_5d=delete 9 | KEYBOARD_KEY_d8=rightmeta 10 | KEYBOARD_KEY_db=leftmeta 11 | KEYBOARD_KEY_3b=back 12 | KEYBOARD_KEY_3c=f5 13 | KEYBOARD_KEY_3d=f11 14 | KEYBOARD_KEY_3e=print 15 | KEYBOARD_KEY_3f=brightnessdown 16 | KEYBOARD_KEY_40=brightnessup 17 | KEYBOARD_KEY_41=playpause 18 | KEYBOARD_KEY_42=mute 19 | KEYBOARD_KEY_43=volumedown 20 | KEYBOARD_KEY_44=volumeup 21 | -------------------------------------------------------------------------------- /files/61-eve-sensor.hwdb: -------------------------------------------------------------------------------- 1 | sensor:modalias:platform:cros-ec-accel:dmi:bvncoreboot:bvrMrChromebox-*:*:*:efr0.0:svnGoogle:pnEve*:* 2 | ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1 3 | -------------------------------------------------------------------------------- /files/9d71-GOOGLE-EVEMAX-0-tplg.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyncolnmd/PixelbookLinux/8358eae3d3ad9120942514493dbbf16ac693be17/files/9d71-GOOGLE-EVEMAX-0-tplg.bin -------------------------------------------------------------------------------- /files/HiFi.conf: -------------------------------------------------------------------------------- 1 | SectionVerb { 2 | EnableSequence [ 3 | cdev "hw:kblr55145663max" 4 | 5 | cset "name='codec1_out mo hs_pb_in mi Switch' on" 6 | cset "name='Left DAI Sel Mux' Left" 7 | cset "name='Right DAI Sel Mux' Right" 8 | cset "name='Left Speaker Volume' 3" 9 | cset "name='Right Speaker Volume' 3" 10 | cset "name='Left Digital Volume' 60" 11 | cset "name='Right Digital Volume' 60" 12 | cset "name='Left Spk Switch' on" 13 | cset "name='Right Spk Switch' on" 14 | cset "name='Left Boost Output Voltage' 0" 15 | cset "name='Right Boost Output Voltage' 0" 16 | cset "name='Left Current Limit' 7" 17 | cset "name='Right Current Limit' 7" 18 | cset "name='Headphone Playback Volume' 16" 19 | cset "name='Headset Mic Switch' off" 20 | cset "name='DMIC Switch' on" 21 | cset "name='STO1 ADC MIXL ADC1 Switch' on" 22 | cset "name='Pin5-Port0 Mux' 2" 23 | cset "name='Pin5-Port1 Mux' 2" 24 | cset "name='Pin5-Port2 Mux' 2" 25 | cset "name='Pin6-Port0 Mux' 1" 26 | cset "name='Pin6-Port1 Mux' 1" 27 | cset "name='Pin6-Port2 Mux' 1" 28 | cset "name='Pin7-Port0 Mux' 3" 29 | cset "name='Pin7-Port1 Mux' 3" 30 | cset "name='Pin7-Port2 Mux' 3" 31 | cset "name='ADC Capture Volume' 35" 32 | cset "name='ADC1 Capture Volume' 55" 33 | cset "name='ADC2 Capture Volume' 55" 34 | cset "name='DAC L Mux' STO DAC MIXL" 35 | cset "name='DAC R Mux' STO DAC MIXR" 36 | cset "name='STO1 DAC MIXL DAC L Switch' on" 37 | cset "name='STO1 DAC MIXR DAC R Switch' on" 38 | cset-tlv "name='spk_pb_in dsm 0 dsm_params params' /opt/google/dsm/dsmparam.bin" 39 | ] 40 | } 41 | 42 | SectionDevice."Speaker" { 43 | Comment "Speaker" 44 | 45 | Value { 46 | PlaybackPriority 900 47 | PlaybackPCM "hw:kblr55145663max,0" 48 | DspName "speaker_eq" 49 | } 50 | } 51 | 52 | SectionDevice."Headphones" { 53 | Comment "Headphones" 54 | 55 | Value { 56 | PlaybackPriority 800 57 | PlaybackPCM "hw:kblr55145663max,2" 58 | MixerName "DAC" 59 | JackDev "kbl-r5514-5663-max Headset Jack" 60 | JackControl "kbl-r5514-5663-max Headset Jack" 61 | } 62 | 63 | EnableSequence [ 64 | cset "name='Headphone Jack Switch' on" 65 | ] 66 | 67 | DisableSequence [ 68 | cset "name='Headphone Jack Switch' off" 69 | ] 70 | } 71 | 72 | SectionDevice."Internal Mic" { 73 | Comment "Internal Microphone" 74 | 75 | Value { 76 | CapturePriority 200 77 | CapturePCM "hw:kblr55145663max,4" 78 | CaptureChannelMap "2 3 0 1 -1 -1 -1 -1 -1 -1 -1" 79 | MixerName "ADC2" 80 | DefaultNodeGain "2700" 81 | CaptureChannels "4" 82 | } 83 | 84 | EnableSequence [ 85 | cset "name='Sto1 ADC MIXL DMIC Switch' on" 86 | cset "name='Sto1 ADC MIXR DMIC Switch' on" 87 | cset "name='Sto2 ADC MIXL DMIC Switch' on" 88 | cset "name='Sto2 ADC MIXR DMIC Switch' on" 89 | ] 90 | 91 | DisableSequence [ 92 | cset "name='Sto1 ADC MIXL DMIC Switch' off" 93 | cset "name='Sto1 ADC MIXR DMIC Switch' off" 94 | cset "name='Sto2 ADC MIXL DMIC Switch' off" 95 | cset "name='Sto2 ADC MIXR DMIC Switch' off" 96 | ] 97 | } 98 | 99 | SectionDevice."Mic" { 100 | Comment "Headset Microphone" 101 | 102 | Value { 103 | CapturePriority 100 104 | CapturePCM "hw:kblr55145663max,1" 105 | JackDev "kbl-r5514-5663-max Headset Jack" 106 | JackControl "kbl-r5514-5663-max Headset Jack" 107 | } 108 | 109 | EnableSequence [ 110 | cset "name='Headset Mic Switch' on" 111 | ] 112 | 113 | DisableSequence [ 114 | cset "name='Headset Mic Switch' off" 115 | ] 116 | } 117 | 118 | SectionDevice."HDMI1" { 119 | Comment "HDMI/DP Audio Left Output" 120 | 121 | Value { 122 | PlaybackPriority 200 123 | PlaybackPCM "hw:kblr55145663max,6" 124 | JackDev "kbl-r5514-5663-max HDMI/DP,pcm=6 Jack" 125 | JackControl "kbl-r5514-5663-max HDMI/DP,pcm=6 Jack" 126 | } 127 | } 128 | 129 | SectionDevice."HDMI2" { 130 | Comment "HDMI/DP Audio Right Output" 131 | 132 | Value { 133 | PlaybackPriority 100 134 | PlaybackPCM "hw:kblr55145663max,7" 135 | JackDev "kbl-r5514-5663-max HDMI/DP,pcm=7 Jack" 136 | JackControl "kbl-r5514-5663-max HDMI/DP,pcm=6 Jack" 137 | } 138 | } 139 | -------------------------------------------------------------------------------- /files/dsmparam.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyncolnmd/PixelbookLinux/8358eae3d3ad9120942514493dbbf16ac693be17/files/dsmparam.bin -------------------------------------------------------------------------------- /files/dsp_fw_C75061F3-F2B2-4DCC-8F9F-82ABB4131E66.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyncolnmd/PixelbookLinux/8358eae3d3ad9120942514493dbbf16ac693be17/files/dsp_fw_C75061F3-F2B2-4DCC-8F9F-82ABB4131E66.bin -------------------------------------------------------------------------------- /files/dsp_lib_dsm_core_spt_release.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyncolnmd/PixelbookLinux/8358eae3d3ad9120942514493dbbf16ac693be17/files/dsp_lib_dsm_core_spt_release.bin -------------------------------------------------------------------------------- /files/kbl-r5514-5663-.conf: -------------------------------------------------------------------------------- 1 | Syntax 3 2 | 3 | SectionUseCase."HiFi" { 4 | File "HiFi.conf" 5 | Comment "Default" 6 | } 7 | -------------------------------------------------------------------------------- /files/pixelbook-alsa_1.0-1_amd64.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyncolnmd/PixelbookLinux/8358eae3d3ad9120942514493dbbf16ac693be17/files/pixelbook-alsa_1.0-1_amd64.deb -------------------------------------------------------------------------------- /files/pixelbook-keybd_1.0-1_amd64.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyncolnmd/PixelbookLinux/8358eae3d3ad9120942514493dbbf16ac693be17/files/pixelbook-keybd_1.0-1_amd64.deb -------------------------------------------------------------------------------- /files/pixelbook-sensor_1.0-1_amd64.deb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyncolnmd/PixelbookLinux/8358eae3d3ad9120942514493dbbf16ac693be17/files/pixelbook-sensor_1.0-1_amd64.deb -------------------------------------------------------------------------------- /playbook.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: localhost 3 | vars: 4 | profile: all 5 | folders: 6 | - /lib/firmware/ 7 | - /lib/firmware/intel/ 8 | - /opt/google/dsm/ 9 | - /usr/share/alsa/ucm2/Intel/kbl-r5514-5663-/ 10 | - /usr/share/alsa/ucm2/conf.d/kbl-r5514-5663-/ 11 | - /usr/lib/udev/hwdb.d/ 12 | 13 | files: 14 | - { 15 | source: "9d71-GOOGLE-EVEMAX-0-tplg.bin", 16 | dest: "/lib/firmware/9d71-GOOGLE-EVEMAX-0-tplg.bin", 17 | } 18 | - { 19 | source: "dsp_lib_dsm_core_spt_release.bin", 20 | dest: "/lib/firmware/dsp_lib_dsm_core_spt_release.bin", 21 | } 22 | - { 23 | source: "dsp_fw_C75061F3-F2B2-4DCC-8F9F-82ABB4131E66.bin", 24 | dest: "/lib/firmware/intel/dsp_fw_C75061F3-F2B2-4DCC-8F9F-82ABB4131E66.bin", 25 | } 26 | - { source: "dsmparam.bin", dest: "/opt/google/dsm/dsmparam.bin" } 27 | - { 28 | source: "HiFi.conf", 29 | dest: "/usr/share/alsa/ucm2/Intel/kbl-r5514-5663-/HiFi.conf", 30 | } 31 | - { 32 | source: "kbl-r5514-5663-.conf", 33 | dest: "/usr/share/alsa/ucm2/Intel/kbl-r5514-5663-/kbl-r5514-5663-.conf", 34 | } 35 | - { 36 | source: "HiFi.conf", 37 | dest: "/usr/share/alsa/ucm2/conf.d/kbl-r5514-5663-/HiFi.conf", 38 | } 39 | - { 40 | source: "kbl-r5514-5663-.conf", 41 | dest: "/usr/share/alsa/ucm2/conf.d/kbl-r5514-5663-/kbl-r5514-5663-.conf", 42 | } 43 | - { 44 | source: "61-eve-sensor.hwdb", 45 | dest: "/usr/lib/udev/hwdb.d/61-eve-sensor.hwdb", 46 | } 47 | - { 48 | source: "61-eve-keyboard.hwdb", 49 | dest: "/usr/lib/udev/hwdb.d/61-eve-keyboard.hwdb", 50 | } 51 | 52 | tasks: 53 | - name: Make folders where needed 54 | become: true 55 | file: 56 | path: "{{folder}}" 57 | state: directory 58 | mode: "0755" 59 | with_items: "{{ folders }}" 60 | loop_control: 61 | loop_var: folder 62 | 63 | - name: Copy files 64 | become: true 65 | copy: 66 | src: "{{file.source}}" 67 | dest: "{{file.dest}}" 68 | mode: "0644" 69 | with_items: "{{ files }}" 70 | loop_control: 71 | loop_var: file 72 | 73 | - name: Do hw update 74 | become: true 75 | shell: | 76 | systemd-hwdb update 77 | -------------------------------------------------------------------------------- /run-ansible.sh: -------------------------------------------------------------------------------- 1 | echo Detecting OS 2 | 3 | DISTRO=$(cat /etc/os-release | grep -E "^ID=" | cut -d= -f 2) 4 | 5 | echo Distribution is $DISTRO 6 | 7 | ## TODO: install packages needed for ansible 8 | case $DISTRO in 9 | fedora) 10 | echo Installing Fedora ansible components 11 | dnf -y install ansible-core systemd-udev 12 | ;; 13 | debian|ubuntu) 14 | echo Installing Debian ansible components 15 | apt-get update && apt-get install -y ansible udev 16 | ;; 17 | *) 18 | echo Unrecognised distro $DISTRO 19 | ;; 20 | esac 21 | 22 | echo Starting Ansible, enter your sudo password below to allow ansible to act as root where needed 23 | ansible-playbook -K playbook.yaml --------------------------------------------------------------------------------