Archive:Chromebox

From Official Kodi Wiki
Jump to navigation Jump to search
Asus Chromebox
Asus chromebox.jpg
Manufacturer Asus
Released 2014-03-14 (US)
OS Chrome OS
CPU Intel® Celeron 2955U Processor
Storage 16GB internal SSD
RAM 2 GB, Dual Channel, DDR3 at 1600MHz
Graphics Intel® HD Graphics 4000
Connectivity HDMI, Displayport, Bluetooth 4.0, USB 3.0, Wifi 802.11 a/b/g/n, 10/100/1000 Ethernet, 2 -in-1 Card Reader, Audio jack
Dimensions 4.88 x 4.88 x 1.65 inch (WxDxH)
Asus Chromebox Rear Ports
Asus Chromebox Side/Front Ports
Home icon grey.png   ▶ Devices ▶ x86 hardware ▶ Chromebox

The ASUS Chromebox is a small lightweight intel PC that runs Chrome OS and can be made to boot into other linux versions. It features HDMI, Displayport, USB 3 ports, gig ethernet, SD card slot, and internal wireless-n networking. This page is a collection of links, information, tips, and guides related to running XBMC on the ASUS Chromebox line of computers.

Device Preparation

Put in Developer Mode

Putting the ChromeBox in developer mode will allow you to access the underlying Linux operating system features necessary for installing XBMC.

WARNING: This will erase all user data on the device.

With the device powered off:

  1. Insert a paperclip into the hole left of the SD card slot and press the recovery button
  2. Power on the device, then remove the paper clip
  3. When greeted with the recovery screen, press CTRL-D to enter developer mode
  4. Press the recovery button (with paperclip) to confirm.

The device will reboot and wipe any existing user data. Afterwards, the developer boot screen will be shown at each boot, and will have a ~30s delay (and a beep) before booting. You can skip the delay by pressing [CTRL-D] and ChromeOS will boot immediately.

Recoverybutton.png

Disable Firmware Write Protect

Disabling the firmware write protect will allow us to shorten the developer boot screen timeout (from 30s to ~1s), and optionally boot directly to the legacy BIOS (and into Ubuntu or OpenELEC). This is not absolutely necessary, but highly convenient and carries little to no risk.

With the device powered off and unplugged:

  1. Remove (4) rubber feet from bottom of unit
  2. Remove (4) screws under rubber feet
  3. Separate two halves of unit
  4. Remove write-protect screw circled below:
    Inside-chrome1.jpg
  5. Reassemble in reverse order

The write-protect screw can be left out permanently.

Perform a Factory Reset

A factory reset is not needed on a "fresh" device; it is only needed if one has previously installed either Ubuntu or OpenELEC in a dual boot setup and wants to switch to a different dual boot setup, or reset to a clean configuration.

  1. Create recovery media using step 2 of Google's instructions here: https://support.google.com/chromebook/answer/1080595?hl=en
  2. With the device powered off, use a paperclip to press the Recovery button and power on the device
  3. Insert the recovery media (USB or SD) when prompted


Note that this will re-partition the internal hard drive and restore the original copy of ChromeOS, erasing anything else on the drive. The ChromeBox will still be left in developer mode, and if you changed the boot options they will still be set.

Run ChromeBox Device Prep Script

This device prep script will apply all of the settings necessary to run OpenELEC or Ubuntu, both in a dual boot or standalone configuration. It replaces many of the manual steps listed below. This script will:

  • Set the developer mode boot flags (enabling boot via USB and to the legacy BIOS)
  • Backup the existing ChromeOS install to SD/USB (optional)
  • Create the USB installer for a dedicated OpenELEC setup (optional)
  • Update the Legacy BIOS with a fixed one (courtesy of John Lewis)
  • Set the firmware boot flags (shorten boot time, default to legacy BIOS) (optional)


To run the ChromeBox device prep script, perform the following steps:

  1. Power on and boot to ChromeOS.
  2. Press CTRL-ALT-F2 to open a shell.
  3. Login as user chronos, no password is needed.
  4. Run the commands:
    curl -O -L http://goo.gl/w1BU71
    sudo bash w1BU71

And follow the instructions given by the script. Several parts will require user input. If you plan on dual booting, you can skip the ChromeOS backup section (it's not needed) and firmware boot flags sections (you can do it after installation); if you plan on installing OpenELEC or Ubuntu in standalone mode, the ChromeOS backup step is highly recommended, and you should use option #1 or #3 for the firmware boot flags. Ubuntu users can obviously skip the step to create the OpenELEC install media.

Installing XBMC

XBMC can be installed via OpenELEC or Ubuntu+XBMC, in either a standalone or dual boot configuration. This is accomplished via the ChromeBox setup script.

To run the ChromeBox setup script, perform the following steps:

  1. Power on and boot to ChromeOS. Do not log in, but ensure a network connection is established.
  2. Hit CTRL-ALT-F2 to open command prompt
  3. Login with user chronos (no password required)
  4. Download and run the ChromeBox set script with the commands:
    curl -L -O http://goo.gl/3Tfu5W
    sudo bash 3Tfu5W


Full instructions and explanation of the script's usage can be found at the following forum thread: http://forum.xbmc.org/showthread.php?tid=194362


TODO: Add a brief summary of steps for each config for reference.

Playback / Performance Limitations

  • OpenELEC:
    - High idle CPU usage on one core with 2GB RAM; 4GB no issue.
    - lockups when playing a video in background and navigating menus (not ChromeBox specific)
  • Ubuntu:
    - High idle CPU usage on 1 core (regardless of amount of RAM). Does not appear to affect playback performance.



Known issues

  • Some keyboards seem to have issues working on the dev boot screen (before the OS is booted), and therefore cannot be used to install XBMC on a ChromeBox. The Logitech K400 is one of these, so use another keyboard to install if yours doesn't appear to be working.
  • Some MCE remote IR receivers do not currently work with USB 3.0 ports under Linux due to a bug in the mceusb kernel driver. OpenELEC includes a fix for this. The version of Ubuntu installed by the setup script in a dual boot setup also includes this fix.

For standalone Ubuntu (or any other distro) installs, a custom kernel will need to be compiled with the fixed driver. The patch is available here, but the application of the patch and installation of the fixed driver is beyond the scope of this wiki. A user on ubuntuforums has made a precompiled fixed driver available with instructions here: http://ubuntuforums.org/showthread.php?t=2203116&p=13007838#post13007838

  • Suspend/resume is not currently working under OpenELEC, and is generally problematic (eg, freezing on resume)



Old / Deprecated Content

The steps below are now performed automatically by the ChromeBox setup script, but may still be useful in troubleshooting or recovery.

Set Developer Boot Flags

Setting the following boot flags will allow you to boot either to a backup copy of ChromeOS on USB/SD (using CTRL-U) or to the legacy BIOS (using CTRL-L) and into Ubuntu or OpenELEC.

Important: These boot flags must be set before installing either Ubuntu or OpenELEC.

To set the developer mode boot flags, perform the following steps:

  1. Power on and boot to ChromeOS.
  2. Press CTRL-ALT-F2 to open a shell.
  3. Login as user chronos, no password is needed.
  4. Run the commands:
    sudo crossystem dev_boot_usb=1
    sudo crossystem dev_boot_legacy=1



Create a Backup Copy of ChromeOS (on USB/SD)

If you plan on wiping ChromeOS to install OpenELEC (vs dual booting), it's a good idea to have a backup copy of ChromeOS on USB that you can boot to if necessary. These instructions assume you have already put the ChromeBox into developer mode and set the developer boot flags as per above.

IMPORTANT: As part of creating the USB backup copy, the stock legacy BIOS will be restored, so you will need to (re)flash the fixed legacy BIOS after performing this step.

To create a bootable USB copy of ChromeOS, perform the following steps:

  1. Power on and boot to ChromeOS.
    Press CTRL-ALT-F2 to open a shell.
    Login as user chronos, no password is needed.
  2. Insert a USB stick or SD card (8GB minimum) and run the command:
    sudo fdisk -l | grep 'Disk /dev/sd'
    This will list all the drives your ChromeBox sees. The main internal HDD is /dev/sda, any connected USB/SD devices will be /dev/sdb, /dev/sdc, etc. Identify the device corresponding to the USB/SD card you inserted (compare sizes).
  3. Run the following command to copy/install ChromeOS to your USB/SD card:
    sudo chromeos-install --skip_src_removable --skip_dst_removable --skip_vblock --dst /dev/sdb (or whatever your device is from above step)
  4. When the process completes, your Chromebook will reboot. Now with the USB/SD card still inserted, Press CTRL-U to boot the USB/SD copy of ChromeOS. On first boot, it will want to repair itself and then reboot to the standard login screen.
  5. Lets confirm we're booted off of the external device.
    Press CTRL-ALT-F2 to open a shell.
    Login as user chronos, no password is needed.
    Run the command:
    rootdev -s -d

We should see the same device as identified in step 2 above, instead of /dev/sda for the internal HDD. Now we have a backup ChromeOS install that we can boot into at will using CTRL-U on the dev boot screen

Update the Legacy BIOS

It is necessary to update the legacy BIOS to enable booting from USB/SD media, or if replacing ChromeOS with Ubuntu/OpenELEC, as the stock legacy BIOS is completely broken. If you are dual booting and using either the ChrUbuntu or ChrOpenELEC scripts to install, then this step is performed by those scripts and does not need to be done manually.

To update the legacy BIOS:

  1. Power on and boot to ChromeOS
  2. Hit CTRL-ALT-F2 to open a shell
  3. Login with user chronos (no password required)
  4. Download the updated legacy BIOS with the command:
    curl -L -O http://johnlewis.ie/asus-chromebox-SeaBIOS-new.bin
  5. Flash the new bios with the command:
    sudo flashrom -w -i RW_LEGACY:asus-chromebox-SeaBIOS-new.bin


This updated legacy BIOS has a ~5s wait on the 'Press ECS to show boot menu' screen. If you would prefer a shorter wait (~1.5s), use the following file/commands instead of those listed in steps 4/5 above:

curl -L -O https://dl.dropboxusercontent.com/u/98309225/cbox-seabios-nowait.bin
sudo flashrom -w -i RW_LEGACY:cbox-seabios-nowait.bin

The md5sum on cbox-seabios-nowait.bin is F1290EC96AC77026044E29E62B40F6CC

Set Firmware Boot Flags

With the firmware write-protect disabled, we can shorten the default developer-mode boot wait time (from 30s to ~1s) and set the ChromeBox to default to booting the legacy BIOS (and into Ubuntu or OpenELEC) instead of requiring CTRL-D or CTRL-L to be pressed each time.

Important: If you are going to wipe ChromeOS and have a dedicated OpenELEC/Ubuntu setup (and don't care to make a bootable USB copy of ChromeOS), then these boot flags must be set before installing either Ubuntu or OpenELEC. If you are going to be dual booting, then this step must be performed AFTER installation.

To set the firmware boot flags, perform the following steps:

  • Power on and boot to ChromeOS
  • Hit CTRL-ALT-F2 to get to command prompt
  • Login with user chronos (no password required)


To shorten the boot wait time only, run the command:

sudo set_gbb_flags.sh 0x1
(This is the same as immediately pressing CTRL-D)


To shorten the boot wait time and set the default boot to the legacy BIOS:

sudo set_gbb_flags.sh 0x489
(This is the same as immediately pressing CTRL-L)


To set the default to legacy boot only (keeping the 30s timeout), run the command:

sudo set_gbb_flags.sh 0x488


To reset these options to default, use:

sudo set_gbb_flags.sh 0x0



Links