Friday, May 2, 2014

Automating Chromebook Enrollment with Arduino/Teensy

If you find yourself enrolling large numbers of Chromebooks on your domain, and you don't have students to help, I've written an Arduino program that can expedite the process.

Because many Arduinos (and Arduino clones such my favorite Teensy) can act as a keyboard, they can be programmed to output keystrokes (and mouse clicks) when a button is pushed. In this case a button is connected to ground and pin 2 on a Teensy that is running the following code (this is also available on GitHub).

Edit: The code on GitHub has been updated to allow two buttons using a Teensy or a Trinket, with the additional button for inputting the Wi-Fi passphrase. I've included a demo video of the new version at the bottom of this post.

String email = "example@example.com";
String password = "thisisaweakpassword";
const int enrolButton = 2;

#include <Bounce.h>
Bounce button1 = Bounce(enrolButton, 10); // 10 ms debouce

void setup() {
 pinMode(enrolButton, INPUT_PULLUP);
}

void loop() {
 button1.update();
 if(button1.fallingEdge()) {enrol();} // call the enrol function
}

void enrol() {
 Keyboard.begin();
 Keyboard.press(KEY_LEFT_CTRL);
 Keyboard.press(KEY_LEFT_ALT);
 Keyboard.press('e');
 delay(50); // wait for 50 milliseconds before releasing those keys
 Keyboard.releaseAll();
 delay(2000); // wait for 2 seconds to get the enrol screen
 Keyboard.print(email);
 Keyboard.press(KEY_TAB); //tab to get to the password field
 delay(50);
 Keyboard.releaseAll();
 Keyboard.print(password);
 Keyboard.press(KEY_ENTER);
 delay(50);
 Keyboard.releaseAll();
 Keyboard.end();
}


When you hit the button connected to ground and pin 2, this will send the keystrokes Ctrl-Alt-e and your email and password for enrolling a Chromebook. You'll still manually connect to the Wi-Fi or LAN and click Accept on the licence agreement, but you could probably figure out how to automate that with a few more lines of code here (i.e. using KEY_TAB and KEY_SPACE).

Hopefully this will save you some typing and speed up the Chromebook enrolling process. Let me know if you try this.


6 comments:

Clinton Blackmore said...

Now that is awesome!

(I'd love to see a video of it in action, though).

David Hay said...

I'll see if I can record a video next time I'm setting up some Chromebooks. It won't be a particularly exciting video, though, pushing the yellow button will make characters appear on the screen.

Unknown said...

Wow, David this is something i had never considered, i mean this would work for various other applications that just Chrome books :)

David Hay said...

This would certainly work on any computer for anything that requires input from a keyboard and/or mouse. Check out the documentation at http://arduino.cc/en/Reference/MouseKeyboard

Anonymous said...

WOW! This is awesome way to automate 30 seconds or less manual process.

Anonymous said...

clever!