This requires some knowledge about Chrubuntu (especially about installing it) and Linux, no guarantees.
Installation
The best script currently to install Chrubuntu on the ARM chromebook is this one
http://blog.cyphermox.net/2013/10/hacking-with-samsung-arm-chromebook-on.html
I haven’t tried if the script works for USB or SD card, only on the internal mmc.
Follow the instructions (use this for reference), download the script
wget http://goo.gl/s9ryd
and run:
sudo bash s9ryd xubuntu-desktop 15.04
to install Xubuntu 15.04 Vivid Vervet. Clean-installing 15.10 (and later?) might cause an issue where Ubuntu only boots to a permanent black screen. Read the comments for a possible workaround.
You can also use other Ubuntu versions.
And that’s about it for installing, at this moment the kernel you get from the script is Linux chrubuntu 3.8.11
.
You might have to change the default partition if Chromebook boots into ChromeOS. From the script:
Installation seems to be complete. If ChrUbuntu fails when you reboot, power off your Chrome OS device and then turn it back on. You'll be back in Chrome OS. If you're happy with ChrUbuntu when you reboot be sure to run:
sudo cgpt add -i 6 -P 5 -S 1 ${target_disk}To make it the default boot option. The ChrUbuntu login is:
Username: user
Password: user
For me with mmc the target disk was /dev/mmcblk0
And if you later on want to boot back to ChromeOS:
sudo cgpt add -i 6 -P 0 -T 1 /dev/mmcblk0
Encrypted home
If you want to have encrypted home, install ecryptfs-utils
and then create a new user from the Xfce menu option Users and Groups
. There should then be a selection Encrypt home folder to protect sensitive data
when you add a new user.
After installing there are some issues to fix
Touchpad / Xorg
To get touchpad and X working like it’s supposed to, I’ve used a part of this script. So make a file
/etc/X11/xorg.conf.d/exynos5.conf
And copy the configs there
Section "Device" Identifier "Mali FBDEV" Driver "armsoc" Option "fbdev" "/dev/fb0" Option "Fimg2DExa" "false" Option "DRI2" "true" Option "DRI2_PAGE_FLIP" "false" Option "DRI2_WAIT_VSYNC" "true" # Option "Fimg2DExaSolid" "false" # Option "Fimg2DExaCopy" "false" # Option "Fimg2DExaComposite" "false" Option "SWcursorLCD" "false" EndSection Section "Screen" Identifier "DefaultScreen" Device "Mali FBDEV" DefaultDepth 24 EndSection Section "InputClass" Identifier "touchpad" MatchIsTouchpad "on" Option "FingerHigh" "5" Option "FingerLow" "5" EndSection Section "InputClass" Identifier "touchpad catchall" Driver "synaptics" MatchIsTouchpad "on" MatchDevicePath "/dev/input/event*" Option "TapButton1" "1" Option "TapButton2" "2" Option "TapButton3" "3" EndSection
There might be better confs out there than this!
(You can try installing xserver-xorg-video-armsoc-exynos
driver, but I found it to be too buggy.)
Sound
If the sound is not working this guide might fix it (the part about PulseAudio).
In 14.10 and 15.04 all I had to do was to uncomment
load-module module-alsa-sink
in
/etc/pulse/default.pa
and reboot. Then install xfce4-mixer
and use it to un-mute and adjust your speakers and headphones.
Screensaver / sleep / blank screen issues
There’s a problem with chrubuntu 14.10 that after the laptop goes to sleep or when the screensaver starts, the dislay goes blank and doesn’t wake up. I’ve fixed this simply by disabling system sleep
, display sleep
and switch off display
in the Power Manager
.
Also there are some problems with Lightlocker screensaver, so atm it’s best to disable it from Sessions and Startup
, then install and enable xscreensaver
and use it instead.
Locale
Setting locale to UTF-8 for special characters, I ran:
sudo locale-gen --purge en_US.UTF-8
And put
LC_ALL="en_US.UTF-8"
at the end of /etc/environment
Tweaks
In Window Manager
settings it’s a good idea to click Hide content of windows When moving
and When resizing
for better performance (Not that necessary in 15.04).
–
uBlock Origin
as an efficient adblocker for Firefox and Chrome.
–
A snappy video player for Chrubuntu is mpv
when you set the video output to x11
–
Using Maximus
to get most of the screen space
http://www.webupd8.org/2009/11/maximus-do-not-automatically-maximize.html
–
Systemd in 15.04 really affected the boot time on my Chromebook, so for now I’ve switched back to Upstart with apt-get install upstart-sysv
–
Using NetworkManager on one certain network caused the whole system to always crash, so now on that location I stop the network-manager service and use wicd
instead with the driver set to nl80211
–
In /etc/fstab
I’ve set /tmp as tmpfs:
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
Flash player in Chromium
Method 1: To be able to use Flash in Chrubuntu you have to copy the plugin from the ChromeOS first. Use the last part of this as a reference.
So boot up ChromeOS, install updates (to get the latest flash), and then from the terminal I mounted an usb stick and copied the whole chrome plugin folder (/opt/google/chrome/pepper/
) to it. It’s best to get the whole folder so you won’t miss the pepper-flash.info
file which is useful.
Method 2: http://odroidxu.leeharris.me.uk has Pepperflash downloads which are compatible with Chromebook.
In Chrubuntu copy libpepflashpalyer.so
into
/usr/lib/chromium-browser/plugins/
Then take a note of the version number in pepper-flash.info
, at the time of writing mine was 17.0.0.169-r1
Next edit /etc/chromium-browser/default
and set the flags like this (remember to use your flash version):
CHROMIUM_FLAGS="--ppapi-flash-path=/usr/lib/chromium-browser/plugins/libpepflashplayer.so --ppapi-flash-version=17.0.0.169 --ppapi-flash-args=enable_hw_video_decode=0,enable_stagevideo_auto=0,enable_trace_to_console=0"
Notice that you must remove the “r1” part of the version info.
Then in Chromium disable hardware acceleration, restart browser and flash should work.
I also probably made myself owner of the plugin file with something like:
sudo chown your-username:users /usr/lib/chromium-browser/plugins/libpepflashplayer.so
Flash player in Firefox
You can also use Chromium’s pepperflash in Firefox with freshplayerplugin. Build the plugin from github and copy it (libfreshwrapper-pepperflash.so
) to ~/.mozilla/plugins
The freshplayerplugin requires a manifest.json
file for the pepperflash plugin. My installation didn’t have one, so I just copied this and replaced the version number with that of mine (17.0.0.169
) and saved it to /usr/lib/chromium-browser/plugins/manifest.json
Like so:
{ "description": "Pepper Flash Player", "name": "Flapper", "version": "17.0.0.169", "x-flapper-revision": "1210253", "x-ppapi-arch": "armv7", "x-ppapi-os": "linux", "x-ppapi-required-interfaces": [ "PPB_AudioConfig;1.1|PPB_AudioConfig;1.0", "PPB_AudioInput(Dev);0.3|PPB_AudioInput(Dev);0.2", "PPB_Audio;1.0", "PPB_BrowserFont_Trusted;1.0", "PPB_Buffer(Dev);0.4", "PPB_CharSet(Dev);0.4", "PPB_Core;1.0", "PPB_Crypto(Dev);0.1", "PPB_CursorControl(Dev);0.4", "PPB_FileChooser(Dev);0.6|PPB_FileChooser(Dev);0.5", "PPB_FileChooserTrusted;0.6|PPB_FileChooserTrusted;0.5", "PPB_FileRef;1.0", "PPB_Flash_Clipboard;5.0|PPB_Flash_Clipboard;4.0", "PPB_Flash_File_FileRef;2", "PPB_Flash_File_ModuleLocal;3", "PPB_Flash_FontFile;0.1|PPB_PDF;1", "PPB_FlashFullscreen;1.0|PPB_FlashFullscreen;0.1", "PPB_Flash;13.0|PPB_Flash;12.6|PPB_Flash;12.5|PPB_Flash;12.4", "PPB_Flash_Menu;0.2", "PPB_Graphics2D;1.0", "PPB_Graphics3D;1.0", "PPB_ImageData;1.0", "PPB_IMEInputEvent(Dev);0.2|PPB_IMEInputEvent(Dev);0.1", "PPB_InputEvent;1.0", "PPB_Instance;1.0", "PPB_Memory(Dev);0.1", "PPB_NetAddress_Private;1.1|PPB_NetAddress_Private;1.0|PPB_NetAddress_Private;0.1", "PPB_OpenGLES2ChromiumMapSub;1.0|PPB_OpenGLES2ChromiumMapSub(Dev);1.0|PPB_GLESChromiumTextureMapping(Dev);0.1", "PPB_OpenGLES2;1.0", "PPB_TCPSocket_Private;0.4|PPB_TCPSocket_Private;0.3", "PPB_TextInput(Dev);0.2|PPB_TextInput(Dev);0.1", "PPB_UDPSocket_Private;0.4|PPB_UDPSocket_Private;0.3", "PPB_URLLoader;1.0", "PPB_URLLoaderTrusted;0.3", "PPB_URLRequestInfo;1.0", "PPB_URLResponseInfo;1.0", "PPB_URLUtil(Dev);0.6", "PPB_Var;1.1|PPB_Var;1.0", "PPB_VideoCapture(Dev);0.3|PPB_VideoCapture(Dev);0.2", "PPB_View;1.0" ] }
Then edit ~/.config/freshwrapper.conf
to have
pepperflash_path = "/usr/lib/chromium-browser/plugins/libpepflashplayer.so"
and
flash_command_line = "enable_hw_video_decode=0,enable_stagevideo_auto=0,enable_trace_to_console=0"
Pepperflash should now work in Firefox. Disabling HW acceleration in Firefox might be a good idea too.
If it doesn’t work try changing the ownership and permissions for libpepflashplayer.so
and manifest.json
files.
H.264 video in Firefox
In Ubuntu 15.04 H.264 in Firefox seems to work out of the box.
You can still try if there’s any change in adjusting values media.mediasource.enabled
and media.mediasource.mp4.enabled
http://www.ghacks.net/2014/10/26/the-state-of-media-source-extensions-in-firefox/
Or preferences for mp4
http://www.ghacks.net/2014/07/25/enable-mse-h2-64-support-youtube-firefox-right-now/
Installing gstreamer1.0-plugins-bad-videoparsers
or xubuntu-restricted-extras
which it is part of breaks mp4-videos on Firefox.
(You can still install restricted extras if you unmark or remove gstreamer1.0-plugins-bad-videoparsers)
Old H.264 guide for 14.10:
The gstreamer0.10-ffmpeg
package used by Firefox for H.264 video is not available for Ubuntu 14.10. There are PPAs for it but like usual with PPAs they don’t provide binaries for armhf. The solution is to hunt down the packages from older Ubuntu releases in Launchpad, if I remember correctly 14.04 and 13.10 have the required versions. Here’s a list of debs I have saved for gstreamer0.10
to work properly in armhf, but it might be wrong and outdated. Some of the needed packages are found directly from 14.10, dpkg will tell which ones.
gstreamer0.10-ffmpeg_0.10.13-5_armhf.deb
libavcodec-extra-53_0.8.10ubuntu0.13.10.1_armhf.deb
libavformat-extra-53_0.8.10ubuntu0.13.10.1_armhf.deb
libavutil-extra-51_0.8.10ubuntu0.13.10.1_armhf.deb
libopenjpeg2_1.3+dfsg-4.6ubuntu2_armhf.deb
librtmp0_2.4+20121230.gitdf6c518-1_armhf.deb
libswscale-extra-2_0.8.13ubuntu0.13.10.1_armhf.deb
libx264-123_0.123.2189+git35cf912-1ubuntu1.1_armhf.deb
Also check media.gstreamer.enabled
is set to true
Saving in Firefox (fixed in 15.04)
Saving some files, like images, causes Firefox to freeze and hang. I’ve used the add-on DownThemAll! to circumvent the issue.
Reconfiguring the keyboard
You can use xmodmap to edit key functions. I wanted to replace one of the volume buttons with a delete button so I use a command
xmodmap -e "keycode 76 = Delete Delete F10 F10 F10 F10"
It’s a UK layout so the keycode might be different in other versions.
I also need the letters “ä” and “ö” and have it done like this. It uses altgr and shift+altgr on buttons “a” and “o”.
xmodmap -e "keycode 38 = a A a A adiaeresis Adiaeresis ae AE" xmodmap -e "keycode 32 = o O o O odiaeresis Odiaeresis oslash Oslash
Do you think, this will work for Acer Chromebook 13 based on ARM NVidia Tegra K1?
And I read that to install KDE or Gnome or Unity impossible. Is it true?
LikeLike
As long as the graphics drivers are as poor as they now are, running KDE or Unity is just too much. Gnome 2 / MATE could work.
LikeLike
…Awesome tweak to enable audio..I’ve been searching the web for days…Works perfectly!!
LikeLike
[…] На этом в общих чертах — всё. Очень рекомендую предварительно сделать образ для восстановления ChromeOS перед тем как пытаться что либо делать. Дальше — допиливания согласно этому посту. […]
LikeLike
Really really helpful guide, thanks a lot. I am wondering if you have get the hardware acceleration work on chrubuntu. It’s not really that important, but I think Firefox will perform much better with hardware acceleration.
LikeLike
Hardware acceleration would be great, but it would first need proper graphics drivers for the Mali GPU. I think the closest thing is this: https://community.arm.com/docs/DOC-9494
LikeLike
would this work on a HP chromebook 14??
LikeLike
After install and request enter to reboot all I get is a black screen with no cursor. I have been running the script an such:
sudo bash s9ryd xubuntu-desktop dev
Any help is appreciated. Thanks.
LikeLike
The same thing happened to me, don’t really know what caused it. Maybe stay away from 15.10.
LikeLike
I can’t even get ubuntu re-installed now at all. Do you have the full command to go back to previous version?
LikeLike
I haven’t found anything that works.
LikeLike
Yeah it is unfortunate. I don’t want to use crouton…
Anyone?!?!
LikeLike
cheap workaround
0) format the sdcard with ext4 file system
1) run on other linux following commands manually in a terminal to format the sd card (code is from s9ryd script):
target_disk=”/dev/mmcblk0″
ext_size=”`blockdev –getsz ${target_disk}`”
aroot_size=$((ext_size – 65600 – 33))
parted –script ${target_disk} “mktable gpt”
cgpt create ${target_disk}
cgpt add -i 6 -b 64 -s 32768 -S 1 -P 5 -l KERN-A -t “kernel” ${target_disk}
cgpt add -i 7 -b 65600 -s $aroot_size -l ROOT-A -t “rootfs” ${target_disk}
sync
blockdev –rereadpt ${target_disk}
partprobe ${target_disk}
2) change in s9ryd script line 194 from
tar_file=”http://cdimage.ubuntu.com/ubuntu-core/releases/$ubuntu_version/release/ubuntu-core-$ubuntu_version-core-$ubuntu_arch.tar.gz”
to
tar_file=”http://cdimage.ubuntu.com/ubuntu-base/releases/$ubuntu_version/release/ubuntu-base-$ubuntu_version-core-$ubuntu_arch.tar.gz”
3)put the sd card into the chromebook, and run the changed script in crosh with
sudo bash s9ryd xubuntu-desktop lts /dev/mmcblk1
————-
that worked for me for chrubuntu 14.04 and 16.04
LikeLike
This worked for me, 16.04 is installing right now, let’s wait and see if it boots!
However, this workaround seems to be for installation on SD-card, which is not what I’m trying to do (I want to install it on the internal SSD). So all I did was change line 192 in the script (the only changes are “core” to “base” the first 2 times in that line (not the third!), put it online, download it in CROSH and run it with
sudo s9ryd xubuntu-desktop lts
(no /dev/mmcblk1, since I don’t want to install it onto SD!)
LikeLike
[…] Installing Ubuntu 15.04 / 14.10 on the Samsung ARM Chromebook Series 3 (XE303C12) […]
LikeLike