Coder Social home page Coder Social logo

galeforce's Introduction

GaleForce

Build Status

GaleForce is a project to customise the Google Wifi router. This enables you to:

  • Obtain root SSH access
  • Setup any extra features you want, such as a VPN server, or dynamic DNS client
  • Customize settings such as the gateway IP address

Pre-built images

GaleForce uses Travis and produces tagged binaries available from here.

How to build an image

Firstly - you must ensure you've checked out a tagged version of the code. Not every commit has been tested on the router. If you're on a reasonably modern Linux system, you can simply run:

./bin/build-all.sh

If however you're on Windows or macOS, you'll need to use Vagrant (unfortunately Docker for these systems don't have the necessary functions in their xhyve kernels to map loop devices properly):

vagrant up
vagrant ssh -c 'cd /vagrant; ./bin/build-all.sh'

Once completed (by either method), you can copy this image to a USB stick:

sudo dd if=output/gale.bin of=/dev/<usbdevice> bs=1m

How to apply an image

You'll have to put the Google Wifi into developer mode:

Alt text

  1. Unscrew the single screw on the bottom
  2. Insert a very slim blade or screwdriver to ease out the base cover
  3. Insert a USB-C adapter with Power Delivery
  4. Press the reset button on the back until light blinks orange (>16 seconds)
  5. Once blinking orange, hit the tiny bubble switch (SW7 on the board - see image)
  6. Device will start blinking purple and restart
  7. Wait until device restarts and starts blinking purple again
  8. Plug in USB stick
  9. Hit bubble switch again
  10. Wait about five minutes until device pulsing purple (device shows no lights while updating from USB)

Once installed you can then:

ssh [email protected] (password changeme)
localhost ~ # uname -a
Linux localhost 3.18.0-14565-g46be31c1033f #1 SMP PREEMPT Fri Jun 2 14:42:21 PDT 2017 armv7l ARMv7 Processor rev 5 (v7l) Qualcomm (Flattened Device Tree) GNU/Linux

localhost ~ # cat /etc/lsb-release
CHROMEOS_AUSERVER=https://tools.google.com/service/update2
CHROMEOS_BOARD_APPID={9BC3D9F3-D113-8EA2-42D6-F2CDB8189814}
CHROMEOS_CANARY_APPID={90F229CE-83E2-4FAF-8479-E368A34938B1}
CHROMEOS_DEVSERVER=
CHROMEOS_RELEASE_APPID={9BC3D9F3-D113-8EA2-42D6-F2CDB8189814}
CHROMEOS_RELEASE_BOARD=gale-signed-mpkeys
CHROMEOS_RELEASE_BRANCH_NUMBER=40
CHROMEOS_RELEASE_BUILDER_PATH=gale-release/R59-9460.40.5
CHROMEOS_RELEASE_BUILD_NUMBER=9460
CHROMEOS_RELEASE_BUILD_TYPE=Official Build
CHROMEOS_RELEASE_CHROME_MILESTONE=59
CHROMEOS_RELEASE_DESCRIPTION=9460.40.5 (Official Build) stable-channel gale
CHROMEOS_RELEASE_NAME=Chrome OS
CHROMEOS_RELEASE_PATCH_NUMBER=5
CHROMEOS_RELEASE_TRACK=stable-channel
CHROMEOS_RELEASE_VERSION=9460.40.5
DEVICETYPE=OTHER
GOOGLE_RELEASE=9460.40.5
HWID_OVERRIDE=GALE DOGFOOD

Busybox

Busybox is also installed, and all extra commands it provides are on the path:

localhost ~ # ls -altr /usr/local/bin/wc
lrwxrwxrwx 1 root root /usr/local/bin/wc -> /usr/local/galeforce/bin/busybox
localhost ~ # wc --help
BusyBox v1.26.2 (2017-01-11 08:43:16 UTC) multi-call binary.

Usage: wc [-cmlwL] [FILE]...

Shell

The default shell seems to be dash, but you can change it easily enough. I prefer bash as it has tab completion and history navigation:

root@localhost $ chsh
Changing the login shell for root
Enter the new value, or press ENTER for the default
	Login Shell [/bin/dash]: /bin/bash

Change the password (really)

localhost ~ # passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Updates

You will only need to setup GaleForce with the recovery image once. Whenever an official Google automatic update is applied, GaleForce will ensure it sets itself up in the new install. There is a separate galeforce.tar.gz artifact in the releases section that enables you to update just GaleForce itself - it's planned to also make this automatic.

Why not just build Chromium OS from source

I tried - it's fairly easy to do and well documented. However, with the Google Wifi (codename gale), you'll find the board overlays are not there. This means much of the config and blobs are closed source and proprietary.

Thanks

Thanks to these kind folk who helped me out on the Chromium OS dev Google Group:

  • Mike Frysinger
  • Bill Richardson
  • Bernie Thompson
  • Julius Werner

Patching images

Auto updates

galeforce's People

Contributors

marcosscriven avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.