Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lenovo Chromebook 300e to Platform Wiki #19

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
129 changes: 129 additions & 0 deletions Lenovo_Chromebook_300e.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
## Xorg

* The PowerVR GX6250 GPU is not supported at this time. Therefore, no particular Xorg drivers are needed. The built in modesetting driver will correctly detect the display.
* xf86-input-libinput is preferred over evdev and synaptics for the best experience with the touchpad and touchscreen.

## Audio
Many, many channels must be unmuted and their volume turned up, so this handy script will make sure all are unmuted.
```
COUNT=0
while [ $COUNT -lt 200 ]; do echo $COUNT; amixer -c 0 cset numid=$COUNT on; let COUNT=COUNT+1; done
```

Some of the channels must also have their volume increased.

The following channels must be unmuted for the speakers to work. The alsamixer utility (part of alsa-utils) can be used to do this by navigating with the arrow keys and pressing **m** to unmute the channel.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doing this manually is very dangerous. I once did this and ended up with bad smelling speakers.

I would use ucm files instead.


* Speaker Channel
* DAC MIXL DAC L2
* DAC MIXL DAC R2
* DAC MIXL Sto DAC Mix L
* DAC MIXR DAC L2
* DAC MIXR DAC R2
* DAC MIXR Sto DAC Mix R
* DAC1 MIXL DAC1
* DAC1 MIXL Stereo ADC
* DAC1 MIXR DAC1
* DAC1 MIXR Stereo ADC
* 003 I05
* 004 I06
* SPK MIXL DAC L1
* SPK MIXR DAC R1
* SPKVOL L
* SPKVOL R
* SPOL MIX DAC L1
* SPOL MIX DAC R1
* SPOL MIX SPKVOL L
* SPOL MIX SPKVOL R
* SPOR MIX DAC R1
* SPOR MIX SPKVOL R

You may also want to decrease the DAC1 gain value, otherwise audio will still be fairly loud at the lowest setting.

## Additional ARM steps

### Move from USB stick to SDCard
As noted in the [[Installation]], targeting the`SDCard from ChromeOS for boot & root partitions has caused I/O issues but the USB install can be moved to SDCard _after_ ArchLinux successfully boots from the USB stick. Moving to a SDCard can free up a USB port.

* NOTE: I'd suggest SDHC, not SDXC because of exfat partitions, and UHS-I (SDHC I) ultra high speed bus cards, instead of just the older Class 1-10 speed designations. (UHS-II,-III are not yet supported by the kernel.)
* CAUTION: the Chromebook eMMC "disk" is often /dev/mmcblk0 (because all flash drives are types of MMC) so avoid overwriting it! The correct device should be whatever your SDCard is detected, as seen in logs (journalctl) when inserting the SDCard into the Chromebook slot.
```
pacman -S cgpt e2fsprogs
badblocks -wsv -t random /dev/mmcblk1
```
* INFO: badblocks was one utility that I found whose writing option had the side effect of getting past errors from SDCards that had been formatted by Windows, and that neither fdisk nor cgpt could not initially overwrite.

Follow the [[Installation]] up until copying files.
```
mkdir /mnt/new-root
mount /dev/mmcblk1p2 /mnt/new-root
rsync -axX / /mnt/new-root
```
Grab a cup of coffee/tea until the sync finishes.
```
umount /mnt/new-root
reboot
```

### Improve performance
ARM processors do have similar performance tuning abilities as x86 based processors but typical tooling to do the tweaking isn't the same. Example: cpupower doesn't work for ARM. So alternative setups are needed, like getting systemd to call the old rc.local on each boot to set a CPU governor.
```
sudo -i
echo 'echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor' >> /etc/rc.local
sudo pacman -S rc-local
sudo systemctl enable rc-local.service
sudo systemctl start rc-local.service
```

## Optional steps for daily use Chromebook

### Enable automatic network control
Because we may need to reboot, wifi-menu can get tedious, or your Chromebook should almost always be connected to Wifi, so enable the network stack to be automatically controlled and enabled.
```
pacman -S netctl
wifi-menu -o
ls /etc/netctl/
netctl enable mlan0-beercade
netctl start mlan0-beercade
ifconfig
ping 8.8.4.4
```

### Install Desktop Environment
A good, lightweight desktop environment, like Xfce, along with a window manager (xfwm), started by a lightweight desktop manager, like LXDM, on graphical boot; can all be very usable on the Lenovo Chromebook.
```
pacman -S xfce4 xfce4-goodies xfce4-session xorg-xinit xorg xfwm4 lxdm
systemctl enable lxdm.service
reboot
```

### Add yourself a User, with privileges
As best practice, create a user for yourself who can gain local administrator privileges when needed.
```
useradd -m justin
passwd justin
usermod -aG wheel,systemd-journal,sys,log,games,audio,video justin
pacman -S sudo
visudo
```
uncomment one of the wheel lines
```
su - justin
groups
```

You'll want to re-login to any sessions, like Xfce, as your new user to make sure all group memberships are working as expected.

### Sync time & set Timezone
Set your system time to be offset by your local timezone. In many cases (like in dual-boot scenarios), it's better to keep the hardware clock set to UTC and let system time be set offset by timezone and synchronized by a network synchronization service.
```
sudo hwclock --show
sudo pacman -S timedatectl
timedatectl
sudo timedatectl set-timezone America/Chicago
```
set this ^ parameter to your local timezone
```
sudo systemctl status systemd-timesyncd
```

1 change: 1 addition & 0 deletions Platforms.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ These are pages containing additional information for running Arch Linux ARM on
* [[Raspberry Pi 3]]
* Mediatek
* [[Acer Chromebook R13]]
* [[Lenovo Chromebook 300e]]
* Rockchip
* [[Asus Chromebook Flip C101PA]]
* [[Rock64]]
Expand Down