PocketCHIP Intro & Menu
PocketCHIP Intro & Menu
Quick Start
This section explains how to turn on PocketC.H.I.P., setup WiFi, and charge your device.
Turn on PocketC.H.I.P. by pressing down the Home/Power button at the bottom, middle of the keyboard,
for about two seconds.
PocketC.H.I.P. will take a moment to fully load, but while it does you will see the C.H.I.P. logo and then a
PocketC.H.I.P. splash screen.
Once PocketC.H.I.P. is ready you will see a series of slides showing the PocketC.H.I.P. basics. Use the right
arrow key or tap the right side of the screen to advance forward in the slideshow.
Once you have clicked through the basics, you will see a screen with six icons. This is the Home Screen.
Use a finger or stylus (or really anything thats solid and isnt sharp) to tap on the application you want
to use. Press gently enough to make contact with the screen. Theres no need to apply a lot of force. A
gentle touch will do.
While using an application, press the Home/Power button to return to the Home Screen.
WiFi Setup
From the Home Screen, tap the settings icon in the bottom right corner to access the Settings Screen.
Press the button to the right of the WiFi switch to open a menu of all the networks in range. Scroll through
the list and select your network by pressing the arrows above and below the network names. To refresh
the network list, just exit the list and enter again.
When prompted, enter the network password in the text field, then touch the [Connect] button. It may
take a few seconds to connect.
Charging
Plug in PocketC.H.I.P. to a 5-volt 1.5A power supply with a USB-micro cable to charge the 3.7V battery.
Because it is C.H.I.P.s on-board circuitry that manages the charging of PocketC.H.I.P.s battery, the C.H.I.P.
must remain attached to PocketC.H.I.P. for battery charging.
PocketC.H.I.P. is compatible with most cell phone chargers that use a USB-micro cable.
Troubleshooting
If PocketC.H.I.P. becomes unresponsive, hold down the Home/Power button for eight seconds. This will
cut power to PocketC.H.I.P., and immediately shut it down. Only use this shutdown method if no other
shutdown methods work.
PocketC.H.I.P. at a Glance
Touchscreen
PocketC.H.I.P. features a 4.3" display made up of 480 x 272 pixels. The display is resistive touch and
responds to tapping and sliding. This means you can use a finger or almost any object that isnt sharp
you dont want to scratch your screen.
Keyboard
PocketC.H.I.P. has a full QWERTY keyboard with comfortably located arrow keys for gaming.
Each button is labeled with pink text, which identifies the default button behavior. Some buttons have
two rows of pink text stacked atop each other. The bottom text is the primary behavior of the key. The
top text identifies the buttons secondary behavior, which is accessible by holding down SHIFT and
pressing the button.
For example: Holding SHIFT and pressing 1 types !
Some buttons are labeled to the top-left with white text on a pink background. These keys are mostly
located on the right side of PocketC.H.I.P.s keyboard and are for characters like function keys
(F1, F2, F11) and lesser used punctuation marks ({}<>|;). To type these specialized characters, hold the
FN key and press the desired button.
Removable enclosure
PocketC.H.I.P. is extremely hackable and we encourage you to modify the hardware. It is easy to take
apart, since there are no screws used in the assembly.
If you want to fully disassemble PocketC.H.I.P., first (carefully) remove C.H.I.P. from the back of
PocketC.H.I.P.. Then flip PocketC.H.I.P. around and remove the frame (technically known as a bezel)
around the perimeter of the screen. Remove the back case of PocketC.H.I.P. by pressing the tabs above
GPIO Access
Along the top edge of PocketC.H.I.P. are input and output pins from C.H.I.P.. These are great for attaching
and controlling sensors, motors, and LEDs.
See the C.H.I.P. documentation to learn how to use them here.
Pencil stand
Give your hands a break! You can prop PocketC.H.I.P. up on a table with a pencil or pen. Pencils go in
the right-hand-side pencil hole, and pens in the left hole. You only need one.
Power and Charging
Battery Life
Your PocketC.H.I.P. uses a 3.7-volt LiPo battery, that should last for about five hours of use. Increase
battery life by dimming the screen brightness and turning off WiFi.
The top left corner of the screen shows your battery level, and PocketC.H.I.P. will warn you when the
battery charge is getting too low for operation.
Charge PocketC.H.I.P.
Plug PocketC.H.I.P. into a 5-volt 1.5A power supply with a USB-micro cable to charge the 3.7V battery.
Because its C.H.I.P.s on-board circuitry that manages the charging of PocketC.H.I.P.s battery, the C.H.I.P.
must remain attached to PocketC.H.I.P. for battery charging.
PocketC.H.I.P. is compatible with with most cell phone chargers that use a USB-micro cable.
Sleep is a low-power state that saves battery, and also saves you time, since its faster for PocketC.H.I.P.
to wake from sleep than to boot from a powered-off state.
To enter sleep mode, tap the power icon in the bottom left corner of the home screen and select
Sleep. from the menu.
PocketC.H.I.P. is designed to turn off the screen and backlight after a few minutes without any user
interaction.
To wake from either sleep state, simply touch the screen or press a key.
Shutdown
Shutdown PocketC.H.I.P. by pressing the power icon in the bottom left corner of the home screen
and tapping shutdown.
If for some reason, PocketC.H.I.P. becomes unresponsive, you can also shut down PocketC.H.I.P.
by holding down the HOME/Power button for eight seconds. This cuts battery power to PocketC.H.I.P.
and shuts it off. Only use this method if all other methods do not work.
Using PocketC.H.I.P.
Keyboard Shortcuts
PocketC.H.I.P. has a few keyboard shortcuts that will make it faster for you to do common tasks on the
device.
Hold CTRL and press TAB to change the current window (also known as window focus).
Hold CTRL and press q to quit an application.
Flashing
To flash your PocketC.H.I.P. to the latest factory image, tap the power button and then press the flash
software button. Then use a USB cable to connect PocketC.H.I.P. to a computer and follow the directions
on flashing.
WARNING: This will permanently delete all the data on PocketC.H.I.P., so backup anything you want to
keep!
Applications
PICO-8
Play PICO-8
Play games, change games, and make games with PICO-8! With a couple keystrokes, you can join the
PICO-8 community and modify their games, or even make your own!
For more resources to learn PICO-8, search YouTube for PICO-8 videos and check out the PICO-8
Fanzine link.
PICO-8 starts in splore mode, which lets you select which game to load.
If PocketC.H.I.P. is connected to WiFi, PICO-8 community made games can be downloaded and played
here. Navigate the menus using the arrow keys, and press 0 to select a game.
Favourites: Save games to this list by pressing ESC while in the game and selecting Favourite.
Games on this list are playable even when youre not connected to WiFi.
New: Lists the newest additions to the PICO-8 community.
Featured: Lists the top-rated games from the PICO-8 community.
Work In Progress: Lists recent releases of unfinished games submitted by members of the
community.
Collaboration: Lists user-submitted resources, remixes, and other useful things for others to use
in their creations.
Search: Performs a text search of PICO-8s game library
/: Lets you navigate the PICO-8 folders on your PocketC.H.I.P.
While in the splore mode, press ESC and select EXIT TO CONSOLE to start PICO-8s command line
interface. PICO-8s command line commands are listed below:
Help lists the available commands
Splore return to cart explorer
dir list the contents of the current directory
cd [directory name] change to the desired directory
cd .. go up a directory
cd / change back to top directory (on PICO-8s virtual drive)
keyconfig customize the keys used by all games
mkdir make a new directory
folder open the current directory in the host operating systems file browser
load [name of game] load a game from the current directory (this is like putting a cartridge into
the console)
run plays the cart that is currently loaded
save [filename] saves the currently loaded cart with the given name (this is used when youve
made changes to the games code, graphics, or music)
Gamers, get ready to become game-makers. In addition to playing the communitys games, PICO-8 allows
you to modify existing games, or create games of your own using the code, graphics, and sound editors.
See the image above to learn which icon stands for which editing mode, and keep reading for an
explanation of each mode.
Code Editor
Access the code editor from the command line by pressing ESC. If you are in the middle of a game,
press ESC and select EDIT THIS CART to edit the games code. Some other helpful shortcuts are:
Hold SHIFT to select multiple characters or lines (or tap-and-drag)
CTRL-X, CTRL-C, CTRL-V to cut, copy, or paste a selection
CTRL-Z, CTRL-Y to undo, redo
CTRL-F, CTRL-G to search for text, repeat search
ALT-UP, ALT-DOWN to navigate to the previous, next function
The code editor is not the only editor in PICO-8. Access the other editors by tapping on the icons in the
upper right-hand corner of the editor.
Sprite Editor
Use the sprite editor to create the artwork that make up tiles, characters, or other graphical elements of
the game. The navigator at the bottom of the sprite editor screen shows an 8x8 pixel box that is displayed
in the sprite sheet window, but it is possible to use freeform tools (pan, select) to edit larger areas.
Use the following tools to edit sprites:
Draw Tool
Click on the desired color and then click in the editor window to apply the color to each pixel.
Hold the CTRL button and click on a pixel to replace all of the same-colored pixels in the window
with the selected color.
Stamp Tool * Select an area of the sprite sheet that you want to copy using the select tool. * Select the
stamp tool and click the location where you want the copied pixels to be pasted. * Hold CTRL to stamp
with transparency (this pastes all of the non-black pixels in the selection).
Select Tool * Use the shortcut: SHIFT or S to save time. * Click and drag with the select tool to highlight
an area of the sprite sheet. * Enter or click to select none.
Pan Tool * Use the shortcut: Spacebar. * Click and drag to move around the sprite sheet.
Fill Tool * Fill an area with the selected color. * If you have selected an area of the sprite sheet, the fill
will be limited to the selected area. * If no selection is active, the fill will be limited to the area in the
editor window.
Map Editor
The tools for the map editor work similarly to those in the sprite editor. However, rather than choosing
colors and drawing directly on the map sheet, select a sprite and use the draw or fill tool to place sprites
into the map sheet.
PICO-8s sound editor has two view modes: graph view and tracker view. Switch between modes by
tapping on the graph and tracker buttons in the upper-left corner of the sound editor.
In both views, the number in the top left, under the view selector is the sound effect number. PICO-8 can
handle 64 different effects.
Change the speed of the sound by clicking on the number in the box labelled SPD. Tap and drag to
change the value (dragging left decreases, dragging right increases). The SPD value describes the
duration of each note, so the higher the value, the slower the sound will play.
The LOOP values define the start and end points of a section of the sound effect that repeats. These can
be changed by tapping and dragging like the SPD values.
Select from the eight available instruments by clicking on the gray waveform boxes below the SPD and
LOOP fields.
Press the spacebar to play/stop the current sound effect.
Graph mode
In graph mode, choose an instrument and then click-and-drag left-to-right to draw the sound across the
pitch window. Draw higher in the window to create a sound with a higher pitch. Adjust the volume of
each note, with the sliders in the volume window at the bottom of the graph mode screen.
Tracker mode
In the tracker mode, each line of six dots represents a note. Each dot represents an aspect of the notes.
In left-to-right order they are: frequency, octave, instrument, volume, and effect.
Frequency * Denoted by the letter of the musical pitch. * Input the pitches, using
the q2w3er5t6y7ui keys like a piano. * Q is a C note, W is a D note. * The number keys are
the sharps and flats (like the black keys on a piano).
Octave
For each note, choose octave 1, 2, 3, or 4 in the OCT field at the top, or type the corresponding
number: 1 is the lowest octave and 4 is the highest.
Instrument
Choose one of the instruments in the gray waveform boxes or type the corresponding number (0 through
7).
Volume
Choose volume level in the VOL field or type the corresponding number (0 through 7).
Effect
Choose an effect from the boxes under the instruments or type the corresponding number (0 through
7). The 8 effects are:
0 - none
1 - slide
2 - vibrato
3 - drop
4 - fade in
5 - fade out
6 - fast arpeggio
7 - slow arpeggio
Music Editor
The music editor allows up to four effects at a time for your games soundtrack. Click on the boxes above
each column to activate the track and choose which effects will be included in each song pattern.
Patterns can be set to move to the next pattern, repeat the current pattern, or stop when finished with
the arrow and stop icons on the upper right.
PICO-8 can hold up to 64 song patterns.
SunVox
The SunVox tracker is a fully featured music production studio. Its lightweight, sounds great, and is
designed to work with a stylus on a single, small screen. As a result, its a perfect fit for for making music
and playing with sound on PocketC.H.I.P..
To get started launch SunVox, put on some headphones, press SHIFT-space to start playback, and dive
into a complete world of electronic sound. While SunVox is pretty much limitless in its configuration,
C.H.I.P. has limited CPU and memory resources. Keep in mind if you add a lot of filters, reverbs, and
delays, SunVox might stutter on playback. Its also a good idea to quit any other processes running on
C.H.I.P. using ALT-tab to go to other applications and windows and CTL-q to quit them.
Interface Overview
Heres a quick overview of what you see when you launch SunVox, and what the different parts of the
interface do. Visit the SunVox page for more information, including complete keyboard mappings. There
are also lots of introductory SunVox videos on YouTube, just search for SunVox intro videos.
Keyboard Shortcuts
Weve modified some of the default keyboard shortcuts to work better with the PocketC.H.I.P. keyboard.
Heres whats different:
Command
Keys
stop
Shift-v
Shift-b
play pattern
Shift-n
record
Shift-r
octaves 0-8
Shift-[0-8]
play
Shift-space
Pattern Editor
The Pattern Editor is like a page of sheet music. Instead of staffs, measures, clefs, notes, and
articulations, it has 32 rows and several columns that represent pitch, timing, and even how a pitch is
played (soft, hard, bright, etc).
Patterns represent chunks of a song that will later be dropped into the timeline of the song and arranged
with other patterns.
Note: All the numbers are in hexadecimal, so instead of the number 46, youll see 2E. These notes can
play drums, lead instruments that sound like a guitar (maybe), bass notes, or even atonal washes of
sound.
In the pattern editor you can add notes and note modifiers to compose patterns.
Spacebar toggles edit mode on and off, use the arrow keys to select rows, use letters to enter notes,
use numbers to enter (hexadecimal) values for velocity, module, and control values.
Touch Keyboard
The Touch Keyboard is in the middle of the screen. Tap on it and youll hear sound.
If youre editing a Pattern, you can use this to enter notes. Just tap in the first column in the editor where
you want a note to play and then tap the note on the touch keyboard. The editor will record the note
you play and then move to the next line so you can tap the next note you want to play.
You can also use PocketC.H.I.P.s QWERTY keyboard to enter notes. To enter notes on the QWERTY
keyboard, use it similar to a piano. For example, Z is a c note and X is a d note.
From left to right across the bottom row of the keyboard, the notes ascend.
For sharp and flat notes, use the row above. For example, S is a c-sharp because it is above and between
the Z and X keys (similar to where the c-sharp key is on a piano, above and between the c and d notes).
The Module Editor is located below the Touch Keyboard on its right. This includes the different
instruments, synthesizers, or effects you can use to change the sounds that you put into the patterns
above. You can add new modules, delete current modules or rearrange modules to fit your needs.
With any sounds you make, you need something to generate the sound first. Double-tap on the
background in the module editor and then choose a generator from the list. Once youve picked a
generator need to connect it to the output. Do this by holding SHIFT and then tapping and dragging
from the generator to the OUT box
You can also add effects to the sounds made by the generator. Double-tap in the background again and
choose an effect from the list. Now change the route the sound goes through by tapping and dragging
from the generator to the effect. Then tap-and-drag from the effect to the output box.
You can have multiple instruments and different paths for the sound in the editor at one time. When
editing patterns, tap on the generator you want to use and then edit the pattern. Changes to the pattern
will be made using the currently selected generator.
To delete an effect or generator, double-tap the module and tap the delete button.
Parameter Controls
Parameter Controls for the currently selected module are in the bottom left corner of the interface.
Violin players can bend a string and change how they bow, vocalists can shape their mouths and vocal
chords, electric guitarists can stomp on pedals and hit the whammy bar, synthesizer nerds can turn knobs
and sliders. In SunVox, you can modify how a synth or effect sounds using the horizontal sliders in the
Parameter Controls.
Tap on a module and use the Parameter Controls on the left to modify the sound. Play the (piano or
PocketC.H.I.P.) keyboard to hear the sound of a synth module. Use CTRL-arrows to jump to different
modules. SHIFT-drag to connect and disconnect modules.
Resize Handles
Tap-and-drag in these areas to resize the panels.
Transport
Record new pattern into timeline, play from beginning, play, play pattern, stop.
Octave Up/Down
Change the octave of the touch keyboard.
Edit Pattern Indicator
When locked, you cant make changes to the pattern.
Spacebar unlocks the world of pattern editing!
Volume
Tap-and-drag the volume control to change output volume.
Menu Items
Sunvox has one simple menu. Tap here to save and load projects, set preferences like MIDI controllers,
and the ultra-fun Touch Theremin feature! Select it in the Menu, and start making some noise!
Switch To Timeline
The Timeline allows you to place, move, and rearrange patterns to create a song. On PocketC.H.I.P.s
small screen, youll need to use the Switch To Timeline button.
In Timeline, you can also freely record notes while you play them with the Record button, or you can
clone patterns to repeat them. Move the patterns blocks around to create your composition. When
finished, you can render a finished stereo file and distribute it as you want!
MIDI
You can attach a MIDI keyboard or controller to PocketC.H.I.P.s USB port and have even more fun with
SunVox. Not only can you play notes from a keyboard, but you can use MIDI knobs and sliders to control
parameters of different synths. Tweak on!
Terminal
Many may find the Terminal archaic or intimidating, its a place to type commands directly to the
computer for execution and evaluation by the operating system. There are no icons, just text.
Use the terminal to dive into the operating systems guts, quickly move files around, play with
PocketC.H.I.P.s GPIO, or extend its capabilities. Theres a primer on using Terminal in the C.H.I.P.
documentationhere if you want to learn more.
Terminal Top Buttons
The Terminal has a few small buttons at top. From left to right, they are:
New Tab
Close Tab
Zoom in (increase font size)
Zoom out (decrease font size)
Copy selected text
Previous tab
Next tab
Flip toolbar
Paste - Paste selected text (can be from another tab, not in another application)
Write
Write is a minimalist text editor thats well suited for basic text entry tasks. If youre looking to code with
Write, youll be pleased to learn that it supports line numbering and auto indentation, just look under
the Option menu.
File Browser
The File Browser provides a visual representation of the files on your PocketC.H.I.P. using icons. Drag,
drop, and double-click your way through this application for full control over every file on your device.
Help
You are reading it right now. No kidding! This document is available online and locally on PocketC.H.I.P.,
which means anywhere PocketC.H.I.P. goes, help will be right there with it.
Settings
Use the PocketC.H.I.P. settings to change WiFi, screen brightness, or volume levels.
To access the PocketC.H.I.P. settings, tap on the sprocket icon on the Home Screen.
From the Settings Screen, tap the switch next to the WiFi icon to turn WiFi on.
Press the button to the right of the WiFi switch to open a menu of all the networks in range. Scroll through
the list by tapping the onscreen arrows, and select your network by tapping on its name.
When prompted, enter the network password in the text field, then touch the [Connect] button. It may
take a few seconds to connect.
Currently only WiFi is configurable from the PocketC.H.I.P graphical interface. If you want to configure
Bluetooth, consult the C.H.I.P. documentation page here.
Screen Brightness
Tap the brightness slider on the left to decrease brightness or tap the right to increase. Lowering the
brightness is an easy way to increase battery life.
Volume
Adjust the volume slider by tapping on the left to decrease volume or on the right to increase it. Of
course, youll need to have headphones or speakers attached to PocketC.H.I.P. to hear anything.
Security
Just like you have a username and password for your e-mail account, PocketC.H.I.P. has a username and
password for its operating system. The main user account on PocketC.H.I.P. is chip, and the password is
also chip. Both username and password are case sensitive.
At startup, PocketC.H.I.P. automatically logs you in as chip. This means theres no need to manually
enter chips password chip. There are times when youll need to use the chip password, but you can get
most things done without it.
PocketC.H.I.P. also has a second username called root, which should only be used for administrative
tasks such as installing and removing software. The root password is also chip, and both are also case
sensitive.
Never login directly as root, since it is extremely easy to delete critical files in the system. Instead, use
the system administration command sudo, which provides a bit of protection from accidentally breaking
your system.
For more information on using sudo, see the C.H.I.P. docs here.
Username Password
chip
chip
root
chip
You should change your password for both the chip and root account to something other than chip.
Open the terminal application from the PocketC.H.I.P. Home Screen, type the following command:
passwd
and press ENTER.
Youll be prompted for your current password, which is chip and then required to enter in your new
password twice. Thats it!
Using Accessories
Just because PocketC.H.I.P. is complete with a keyboard and screen doesnt mean you cant add speakers,
storage, or wireless gadgets to make it even more fun.
PocketC.H.I.P. input and output ports are all handled by C.H.I.P.. Chances are good that if an accessory
works with C.H.I.P., it will work with PocketC.H.I.P.!
Audio
PocketC.H.I.P. does not have a built-in speaker, but that doesnt mean it cant output sound.
To listen to audio from PocketC.H.I.P., attach any wired headphones or speakers to the audio jack at the
top of the device. This jack is known as a TRRS jack and can accommodate headphones. With a simple
modification to the C.H.I.P., the TRRS jack can accomodate headphones that have built-in microphones.
Micro-USB
Use the micro-USB port for charging PocketC.H.I.P. with a 5-volt, 1-amp power supply. Most cell phone
Standard USB
USB
accessories,
like
USB devices take power to operate. If they are not independently powered, they will reduce the battery
life of PocketC.H.I.P. or cause operation to become sporadic.
Glossary
apt-get: the package manager used for installing, upgrading, and removing application in Debian Linux.
Bezel: section of the case that clips around the touchscreen.
Booting: the process of PocketC.H.I.P. powering on and loading Debian.
Command Line: the area in the Terminal where text is input for the Operating System to evaluate. Debian:
a version of the Linux Operating System that runs on PocketC.H.I.P..
Fantasy Console: a console game system that does not have dedicated, specific hardware to run its
software. For example, PICO-8.
Flashing: the process of overwriting the contents of NAND with an Operating System and Applications.
Linux: a computer Operating System that runs on all different types of hardware. Everything from bank
ATMs and cell phones to C.H.I.P. and PocketC.H.I.P.
NAND: a type of storage used on PocketC.H.I.P. for the OS, applications, and all your files.
Open Source Hardware: Open source hardware is hardware whose design is made publicly available so
that anyone can study, modify, distribute, make, and sell the design or hardware based on that design.
More info at the Open Source Hardware Association.
Open Source Software: Very briefly, Open Source Software is software where the source code for a
program is made freely available. But theres a lot more to this, as you can read at the Open Source
Initiative website.
QWERTY keyboard: is a layout of keys where the top rows first six keys spell qwerty.
SCP: a utility to transfer files to different computers.
Shell: see Terminal
SSH: (aka Secure Shell) is a utility used to login to remote computers running SSH service.
Stylus: a pointing device
Terminal: a program used to enter text commands for the Operating System to execute or interpret.
TRRS jack: a connector commonly used for audio or video equipment. TRRS stands for tip, ring, ring, and
sleeve and refers the the way the male connector is divided.
FAQ
Can I take C.H.I.P. out of PocketC.H.I.P. and use it? At this time, it will not work as expected without
reflashing. The C.H.I.P.s in PocketC.H.I.P. run a custom graphics software thats designed for the
touchscreen and PocketC.H.I.P. keyboard. C.H.I.P. may boot, but the resolution and input will not work
as expected.
Is it Legal to Modify PocketC.H.I.P.? Yes. PocketC.H.I.P. and C.H.I.P. are open source hardware. We
encourage you to modify PocketC.H.I.P. and be sure to share what youve done with our community!
Is PocketC.H.I.P. Open Source? Yes, and you can get the hardware files at our github repo.
Will my microUSB charger work with PocketC.H.I.P.? PocketC.H.I.P. is compatible with with most cell
phone chargers that use a USB-micro cable. PocketC.H.I.P. needs a power supply capable of outputting
5-volts with at least 1 amp.
Can I connect PocketC.H.I.P. to a second display? No. At this time PocketC.H.I.P. does not support
multiple displays.
Is it OK to eat PocketC.H.I.P.? No! Neither C.H.I.P. nor PocketC.H.I.P. should ever be eaten, even by
C.H.I.P.py Ruxpin.
Will my Bluetooth Device Work? Yes, so long as the device is supported under Debian Linux. However,
you will need to setup the bluetooth pairing using the terminal here. Our initial release of PocketC.H.I.P.
does not provide graphical bluetooth configuration.
Pinch-zooming isnt working, is my screen bad? Your screen is fine. The resistive touchscreen used in
PocketC.H.I.P. does not support pinch gestures.
How can I get PockulusC.H.I.P.? Good news! You already almost have one. All you need to do is 3D print
the file at here or find a friend to do it for you.
How can I contact Next Thing Co.? Send us an e-mail at [email protected].
License
U-Boot
PocketC.H.I.P. boots using U-Boot 2015.10 (GPLv2) with custom patches.
Source code is available at:
https://github.com/CHIP-u-boot
See below for the full text of the GPLv2.
Linux
PocketC.H.I.P. runs mainline Linux 4.3 (GPLv2) with custom patches.
Source code is available at:
https://github.com/CHIP-Linux
See below for the full text of the GPLv2.
PocketC.H.I.P. runs Debian 8 (Jessie)
Debian contains various open source software.
The license for a particular debian package is included in the package documentation in
/usr/share/doc/.
PocketC.H.I.P. Launcher
The PocketC.H.I.P. Launcher is Copyright 2016 Next Thing Co.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the Software), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.
THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
The source code for a work means the preferred form of the work for making modifications to it. For an
executable work, complete source code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to control compilation and installation of the
executable. However, as a special exception, the source code distributed need not include anything that
is normally distributed (in either source or binary form) with the major components (compiler, kernel,
and so on) of the operating system on which the executable runs, unless that component itself
accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place,
then offering equivalent access to copy the source code from the same place counts as distribution of
the source code, even though third parties are not compelled to copy the source along with the object
code.
1. You may not copy, modify, sublicense, or distribute the Program except as expressly provided
under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program
is void, and will automatically terminate your rights under this License. However, parties who
have received copies, or rights, from you under this License will not have their licenses terminated
so long as such parties remain in full compliance.
2. You are not required to accept this License, since you have not signed it. However, nothing else
grants you permission to modify or distribute the Program or its derivative works. These actions
are prohibited by law if you do not accept this License. Therefore, by modifying or distributing
the Program (or any work based on the Program), you indicate your acceptance of this License to
do so, and all its terms and conditions for copying, distributing or modifying the Program or works
based on it.
3. Each time you redistribute the Program (or any work based on the Program), the recipient
automatically receives a license from the original licensor to copy, distribute or modify the
Program subject to these terms and conditions. You may not impose any further restrictions on
the recipients exercise of the rights granted herein. You are not responsible for enforcing
compliance by third parties to this License.
4. If, as a consequence of a court judgment or allegation of patent infringement or for any other
reason (not limited to patent issues), conditions are imposed on you (whether by court order,
agreement or otherwise) that contradict the conditions of this License, they do not excuse you
from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your
obligations under this License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent license would not permit royaltyfree redistribution of the Program by all those who receive copies directly or indirectly through
you, then the only way you could satisfy both it and this License would be to refrain entirely from
distribution of the Program.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the
balance of the section is intended to apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims
or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of
the free software distribution system, which is implemented by public license practices. Many people
have made generous contributions to the wide range of software distributed through that system in
reliance on consistent application of that system; it is up to the author/donor to decide if he or she is
willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this
License.
1. If the distribution and/or use of the Program is restricted in certain countries either by patents or
by copyrighted interfaces, the original copyright holder who places the Program under this
License may add an explicit geographical distribution limitation excluding those countries, so that
distribution is permitted only in or among countries not thus excluded. In such case, this License
incorporates the limitation as if written in the body of this License.
2. The Free Software Foundation may publish revised and/or new versions of the General Public
License from time to time. Such new versions will be similar in spirit to the present version, but
may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies a version number of this
License which applies to it and any later version, you have the option of following the terms and
conditions either of that version or of any later version published by the Free Software Foundation. If the
Program does not specify a version number of this License, you may choose any version ever published
by the Free Software Foundation.
1. If you wish to incorporate parts of the Program into other free programs whose distribution
conditions are different, write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free Software Foundation; we
sometimes make exceptions for this. Our decision will be guided by the two goals of preserving
the free status of all derivatives of our free software and of promoting the sharing and reuse of
software generally.
NO WARRANTY
2. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE
PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED
IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM AS IS
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
SERVICING, REPAIR OR CORRECTION.
3. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY
COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO
USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
One of the great powers of Linux is the so-called command-line. This simple text interface for
computing unveils many of the gears and levers that make a computer tick. Many find it easier to
get things done, as it is a focused and terse way to interact with the computer.
When you first use the Terminal Emulator program, you may quickly find that you do not have
permission to do something. That is because many commands are safely reserved for root
access, and you are automatically logged in as the chip user. Dont fear: you can often use
the sudo command and use the default password chip to execute these restricted commands.
Finally, it is probably wise to change the default password on your CHIP. You can do with
with shell passwd or shell sudo passwd root and youll be asked for a new password. Dont
forget it!!
If you are such a fan of the command line, you may want to boot with out the desktop and window
system. Instructions for that are here
One of the great things about Linux is the terminal application. While it may look unfriendly and
terse, if you want to really extend the capabilities of CHIP, youll often find yourself in the terminal.
If youre a beginner, heres a quick reference of some really important and common commands.
You can simply add -h to get some hints on how to use a command, such as cp -h or you can
read a manual page usingman cp. Most unix commands have a variety of options that can be
executed in the command with flags, such as ls -l -a. Even better, search the internet! This
primer is simply here to help you understand what a command might be doing, not to help you use
it to its full ability.
cd change directory. open a folder. ex: cd ~/Pictures changes your current directory to
mkdir make directory. create a folder. ex: mkdir Vacation makes a folder
the home Pictures folder, so you can easily access the files within.
ls list files in the current directory so you know what is in it. Some options are ls -l to list
in long format to provide information about permissions, size, and date. ls -a to show
hidden files that start with the . character.
mv move a file from one directory to another, or to give it a new name. Ex: mv this.one
that.one renames a file. mv this.one ~/Pictures/Vacation/ puts the file this.one into
the Vacation directory.
cp copy a file from one place to another. Ex: cp this.one this_01.one will
copy this.one to another file this_01.one. Add directories for more fun: cp
~/Pictures/Vacation/saturn.jpg
/Users/otherone/Pictures/Vacation/saturn.jpg.
rm remove a file. delete it, and beware!. Use the -r to make it recursive to delete a
sudo super user do. many commands need administrator-like privileges, otherwise they
wont work. apt-get is a command that needs to be run with sudo to allow files to be
written to protected directories. Youll see sudo as the first word in a lot of commands - all it
is doing is giving the command the necessary access. Youll be asked for a password the
first time you use sudo. The default password and user is chip.
apt-get the command used for installing, removing, and finding software for Debian Linux
systems, such as the CHIP Operating System. sudo apt-get install puredata installs
the Pure Data program and any dependencies. sudo apt-get remove puredata will
remove the program. sudo apt-cache search image will search apt repositories for the
pwd present working directory. In case you forget where you are. Not much to it: pwd will
output the directory name, such as /Users/home/chip/Pictures/Vacation/
grep a tool used for searching through files. Its quite deep and can be complicated, but if
you see the word grep in some command, you know its searching for a match.
| (pipe) a command used to redirect data into an application.
< (redirect) a command use to redirect data into a file.
cat concactenate. used to append data to a file. Ex: cat "Last line of text" >
sometext.txt. Merge files: cat append.txt > main.txt will put all the text in append.txt
into main.txt.
less makes it so you can paginate and read a text tile. Ex: less longtext.txt will fill the
screen with the first part of the longtext.txt file. Use the space bar to view the next page.
Type q to exit.
nano a text editor. Youll often see commands that call nano so you can edit a
find look for files in the filesystem. Ex: find ~/Documents -name particular.txt -
type f will look for the file with the name particular.txt in the Documents directory.
chmod change mode. Used for file permissions, which can be important when sharing
things on the network, scripting actions, and many more reasons.
htop display the processes currently alive on the CPU. If things seem slow, or you want to
see how much CPU or memory a program is using, just type htop to see a table of all
running processes, then typeq when you want to exit.
scp secure copy. copy a file from one computer to another over a network. Ex: scp
Pictures/Vacation/motel.jpg Pictures/Vacation/accident.jpg
network.
ssh secure shell. access another computer on the network and use the terminal commands
to make changes and control it. Ex: ssh [email protected] to access your CHIP on a local
network.
CTRL C if you cant use the terminal because a process is taking too long, type CTRL-C on
your keyboard to cancel the most recent command.
Connecting Accessories
CHIP has a lot of connectors, some for building, some for doing normal computer things. This
section covers the normal computer things, like audio, video, and input.
Recommended Accessories
CHIP is a minimal computer. Many CHIP users may never connect common peripherals, instead
using CHIP as a headless computer. Like desktop computers from Best Buy, you may find that
certain accessories will improve the overal usability of CHIP. We recommend:
Bluetooth Keyboard
USB mouse
Jumper wire
Youll find that a simple powered USB hub is pretty essential if you want to use a lot of USB
devices with CHIP. Not only is there only one USB port (keeping CHIP nice and small), but CHIPs
micro USB power port can only provide so much power for the USB port. If you dont have a
powered USB port, youll quickly max out power if you attach too many accessories.
Many keyboards have USB hubs built-in, so you can attach a mouse to the keyboard, attach the
keyboard to CHIP, and immediately have control. However, its likely the two will draw too much
current, so youll want to connect to a powered hub before you connect.
As you know, CHIP has built-in bluetooth. If you want to use a keyboard and mouse, you can keep
your USB port free for other things (like mass storage or a MIDI controller!) and keep your desk
clean. Seeconnecting to bluetooth section
Monitor
In the spirit of keeping things small, CHIP packs all the audio and video into a small TRRS (TipRing-Ring-Sleeve) connector. Built-in video output is restricted to standard composite video
resolution of 640x480. Higher video resolutions are possible using the VGA and HMDI DIP boards.
Heres what the other end of the cable looks like, attached to a monitor with stereo audio inputs
(red and white) and the composite video plug, moved so you can see the label on the monitor:
CHIP comes with a 1/8" (3.5mm) Tip-Ring-Ring-Sleeve (TRRS) jack, capable of carrying stereo
audio, and either composite video out, or microphone in.
This is a fairly common port, but there are a few different arrangements of the conductors, so not
all cables are equal. Fortunately, CHIP uses the same conductor arrangement as Pi, Zune, and
iPod audio/video cables, so the most common mini to RCA A/V cables should work just fine.
Some cables will route signals a bit differently, using the Red RCA cable for Video instead of
Yellow. If video out isnt working through the yellow cable, see if red works. If not, your cable may
be a version thats arranged in a way that it just wont work with CHIP:
yellow : video
If you want to learn even more about TRRS connectors and the general lack of standardization
with them, this page has even more details.
NTSC or PAL
The composite video format is NTSC by default. If you need to hook up to a monitor that only uses
a PAL signal, youll need to change that at u-boot time. First, connect to CHIP with a UART cable.
Then power up CHIP, and press a key on the keyboard to boot into u-boot mode to change the
environment variable manually.
printenv video-mode
where mode data can be, for NTSC and PAL respectively:
setenv video-mode sunxi:640x480-24@60,monitor=compositentsc,overscan_x=40,overscan_y=20
Headphones
The audio and video connector on CHIP can be dedicated to audio output suitable for headphones
or connecting to an amplifier for filling a room or public space with glorious sound. Just connect a
standard 3.5 mm (1/8") TRS audio plug into CHIPs a/v jack. Of course, if headphones are plugged
in, there will be no room for a composite video output jack. You can also get audio left, common,
and right output frompins 4, 6 & 8 on header U14.
If you want to use audio input, you might find it easiest to use the pins on pins 10 and 12 on
header U14. However, if you want to use the 1/8" TRRS connector, you can modify the CHIP
board to replace the composite video connection with an audio input connection.
If you look at the bottom of CHIP with the audio and USB jacks pointed up, youll see three small
contact pads to the left of the audio jack. The left pad has a small label of mic and the right pad
has a tv label. Between the middle pad and the tv pad is a trace that can be carefully cut with an
Exacto or utility razor blade. Once that is cut (check with a volt or continuity meter), you can put a
solder blob between the micand middle pad. Now the outer ring can be used for audio input.
As another reference, if you had X-ray vision and you were looking from the bottom of CHIP,
youd see a trace like this:
If the composite video connection is needed again, just reverse the process: desolder the
connection between mic and the middle pad, then solder a bridge between tv and the middle pad.
If you want to use the pins 10 and 12 on header U14, youll most likely need to add some
additional circuitry to get a good input signal. Here is a schematic of the simple circuit:
Youll need two 4.7 microfarad capacitors, one 100 nanofarad capacitor, and a 3300 picofarad
capacitor. Youll also need one 2 kilo-ohm and one 4.3 kilo-ohm resistors.
USB Storage
If you have files that you want to modify, use, or transfer to CHIPs internal storage, you can attach
a USB thumb drive, card-reader, or hard drive. Open the file manager and access the files.
USB Audio
CHIP can use Class-compliant USB audio devices. A popular, and inexpensive choice for audio
devices are USB dongles based on the C-Media chipset. These have been tested successfully
with CHIP and can often be purchased for less than $10. Some good resources for linux and audio
compatibility are on the linux audio and alsa project websites.
Many of the drivers have not been tested with CHIP - as CHIP matures, more information will be
available. For now, we recommened USB Class-compliant or plug-and-play audio devices.
Like any modern laptop, CHIP can run and charge any single-cell LiPo battery. Read more in
the powering CHIP section.
shortcuts, applications to run, and settings to set. CHIP is small, so we keep our operating system
simple. Almost everything can be accessed from the Computer Things menu: settings, launching
apps, and access to files. Theres also a few convenient functions in the top right system tray.
Most of the settings for the computer and for the desktop can be set using the apps in the
Computer Things menu. Select the appropriate app from either the Settings Menu or the Settings
Manager.
WiFi
Connecting to a WiFi network is easy using the WiFi icon the top right system tray. Just select a
network to initiate a connection. If you need a password, youll be prompted for it.
If you need more control and information over your network connection, use the Settings->Network
Connections panel to show your connections. Double click on a connection to bring up the
connection editor:
Bluetooth
Bluetooth device setup can be accessed using the Bluetooth icon in the top right system tray.
When you begin a connection, youll be guided through the necessary steps to connect to your
device. For example, when you pair with a keyboard, youll often be prompted for a code to enter
to ensure a unique connection. Once you have paired a device, future connections will usually be
automatic when the devices are in range and powered up.
You can manage, and also connect to, your devices using the the Bluetooth Devices panel,
accessed from the Bluetooth system tray:
Sound
By default sound output comes from the built-in connector, served by the sunxi codec driver. If
you want to change the volume, you can use the volume control in the top right system tray:
Here, you can select the Playback category to change the volume:
If you dont see that control, just click on the Select Controls button and enable all controls:
Display
Use the Settings->Display control panel to adjust the monitors resolution and rotation settings:
If you want to customize the desktop image, icons, colors, and fonts, there are two different panels.
The Appearance panel lets you select a theme to make instant changes for several properties.
The Desktop panel lets you customize images and colors, along with the behavior of menus.
If you want to change the theme or the icon sets, you can search for these using the Synaptic
Package Manager. Search for gtk2 themes or icon sets. There are also packages that can
make it easy to find and configure themes, such as gtk-theme-config. Similarly you can use the
command line to search packages with apt-cache search gtk2 theme.
Set the Time with the Orage Globaltime panel. This can be found in Accessories->Orage
Globaltime or in Office->Orage Globaltime. Simply click the time to bring up the preferences panel.
You can quickly view the date from the Orage Calendar in the Office menu.
Mouse Sensitivity
Mouse sensitivity is set for the default 640x480 resolution. If you are using CHIP with a higher
resolution monitor, you may want to adjust the sensitivity of the mouse. You can get to the Mouse
settings panel from Computer Things->Settings->Mouse and Touchpad
CHIPs operating system comes with a default language of English. You can change the language
and the location, but youll need to use the terminal to do so. Use the Computer Things! menu to
launch the Terminal Emulator. Then use the apt-get command to install the language packs and
run a simple program to configure your language and location:
sudo apt-get update && sudo apt-get install locales && sudo dpkg-reconfigure
locales && sudo locale-gen
Youll get a large menu to select locales. Use the arrow keys to scroll down and spacebar to mark
your location with an [*]. Its advised that you choose the location marked UTF8. Others are
somewhat arcane edge cases! Hit return to continue.
CHIP comes prepackaged with many open-source applications to get you started. Its easy to
launch an application. You can select an application from the Computer Things! menu and select
an app from the categories:
Or, for more control, launch the Application Finder in Accessories, where you can use the search
bar and easily navigate among the categories:
Below are some of the applications that come pre-installed with CHIP:
AbiWord
AbiWord is a fully featured word processor. You can learn more at The AbiWord website
Ice Weasel is a Debian Linux version of the Firefox browser. The browser is largely the same as
Firefox, just with a different name. More information is at the Debian website and in this stack
exchange thread.
Video Player
CHIP plays video! Use the built-in Mplayer to open and play videos.
Terminal (commandline)
The life blood of linux. If theres something you cant do on the desktop, or you want to automate
tasks, or access different hardware settings using nothing but a keyboard and text, youll open up
Terminal.
These are the applications installed by default on CHIP as accessed through the GUI.
Application Finder
Leafpad
Bulk Rename
Orage Globaltime
Screenshot
Task Manager
Viewnior
GNOME MPlayer
AbiWord
QjackCtl
Orange Calendar
Orage Globaltime
Htop
Package Updater
Launch the Synaptic Package Manager to find and install new software. Synaptic is a graphical
interface to the apt-get command and will install software intended for DERP and other debainbased systems. You can learn more about Synaptic here
Theres a simple search bar to make it easy to find packages you are interested in. If you dont find
the package you are looking for, hit the Reload button to refresh Synaptics record of available
packages.
Using Synaptic is very easy. For example, if you wanted to install the Scratch Programming
Environment, you can simply search for scratch and youll get a lot of results. Scroll through, and
youll eventually find scratch in the packages window. However, youll probably want to narrow
your results with better search terms, such as scratch programming environments
When search is complete, you can select scratch from the package panel.
Press the top Apply button, and youll get the following dialog:
Auto Update
CHIP will automatically look for any updates and alert you if updates are available for your existing
software and the operating system.
apt-get
If you are using the commandline, you will use apt-get to install and update new software.
If you are new to apt, some important commands to know:
sudo apt-get update updates the information from repositories, so any installs you make
sudo apt-get install (name of package) to install a package and any of its
dependencies.
sudo apt-get remove (name of package) will remove a package and any
dependencies not used by other packages
sudo apt-get purge (name of package) will remove a package and any dependencies
not used by other packages along with all settings data
apt-cache search (search terms) will search through the package repositories for
names and descriptions that include your search term.
Uninstall Software
You can use the Synaptic Package manager to uninstall any packages you no longer need. If you
know the name, you can use the Search function to find the package, then Mark it for Removal.
For example, if you want to remove AbiWord, first open Synaptic and search for abiword:
Once found, select AbiWord in the package list, and select Mark for Removal in the Package
menu:
If there are additional, related packages that need to be removed, youll be notified:
Finally, you can confirm that AbiWord has been removed by checking the Applications menu:
If you want want CHIP to boot directly into a console, and not load the Desktop or Window
manager GUIs, there are a couple options. For the temporary case, you can open a terminal
window and use the command
Next time you boot CHIP, it will not load the desktop or window environment, leaving you with
command-line operation only. If you wanted to return to booting into the GUI, you can use this
command before you reboot:
The other option is to run a linux distribution with no GUI installed. You may want to do this if you
want to use commandline only and want to save some storage space. You can follow instructions
to flash CHIPwith buildroot, or Debian (with no GUI).
CHIP Hardware
CHIP is small, but it packs a lot of hardware on the PCB. Heres an overview of the connections
and components.
Wireless
WiFi
Bluetooth
CHIP supports the Bluetooth 4.0 LE standard using the built-in Bluetooth.
Physical Connectors
CHIP is loaded with essential connectors for USB, serial, audio, video, and loads of IO on the pin
headers. Oh, and a button too!
Button
There is a tiny tiny button on CHIP next to pin header U13 that is used for turning CHIP on or off. If
CHIP is off and connected to a power source, hold down the button for one second to power it up.
To turn CHIP off (rather brutally), hold the button for 10 seconds. We recommend using the
operating system to power CHIP off, but if you need to, you can use this button.
USB
The single USB port on CHIP is USB 2.0 compatible. It can provide up to 500mA of current, as is
standard for USB ports on computers. If you need to provide more current, we recommend a
powered USB hub.
USB On The Go
The micro USB port is generally used to provide power for CHIP. However, since CHIP can be
powered through the pin headers or a battery, this port can be used for different things. By default,
connecting CHIPs micro USB to a computer will create a USB Serial connection, so you can
access CHIP with a screen or cu session in a terminal. With Linux kernel modifications, it is
possible to enable other modes, such as an Ethernet bridge.
The 1/8" TRRS connector provides composite video and stereo audio output. Headphones can be
plugged in for audio only.
Audio Input uses the same connection on the TRRS connector as the composite video signal. If
you want to make audio input active on the TRRS connector, you need to cut a circuit board trace.
This is not as permanent as it sounds, as it is easy to re-enable composite video out with a small
amount of soldering.
Pin Headers
The Pin Headers provide a massive amount of connectivity, making CHIP a suitable platform for
product development for physical computing and internet of things devices. Heres a basic
diagram that labels all the pins:
U13L
U13R
U14L
U14R
GND : ground
CHG-IN : 5V input
GND : ground
VCC-5V : 5V power
UART1-TX : UART
VCC-5V : 5V
power
GND : ground
serial transmit
U13L
U13R
U14L
U14R
VCC-3V3 : 3V
TS : analog
UART1-RX : UART
power
VCC-1V8 : 1.8 V
power
temperature sensor
input
serial receive
connect to ground
common ground
PWRON : power on
VCC-3V3 : 3 volt
TWI1-SCK : two-
GND : ground
LRADC : low-res
MICIN1 : audio in
X2 : Resistive
(touchscreen)
(touchscreen)
Y1 : Resistive
touchpanel input
LCD-D2 :
RGB666 data
Analog-Digital
Converter
X1 : Resistive
touchpanel input
power
touchpanel input
Y2 : Resistive
touchpanel input
(touchscreen)
XIO-P0 : expander
XIO-P2 : expander
XIO-P4 : expander
XIO-P6 : expander
GPIO
GPIO pin 2
GPIO pi
pin 1
pin 3
pin 5
backlight dimming)
LCD-D4 :
RGB666 data
LCD-D3 : RGB666
data
GPIO pin 6
pin 7
U13L
U13R
U14L
U14R
LCD-D6 :
LCD-D5 : RGB666
GND : ground
GND : ground
LCD-D10 :
LCD-D7 : RGB666
AP-EINT1 :
AP-EINT3 : Application
Processor Interrupt
RGB666 data
RGB666 data
data
data
Application
interactions (keyboard
expander, etc.)
LCD-D12 :
RGB666 data
LCD-D14 :
RGB666 data
LCD-D11 : RGB666
data
LCD-D13 : RGB666
data
CSIPCK : CMOS
serial interface
TWI2-SCK(*) : two-wire
serial bus 2 (I2C)
LCD-D18 :
RGB666 data
LCD-D15 : RGB666
data
CSIHSYNC :
CMOS serial
interface
LCD-D20 :
LCD-D19 : RGB666
CSID0 : CMOS
LCD-D22 :
LCD-D21 : RGB666
CSID2 : CMOS
LCD-CLK :
LCD-D23 : RGB666
CSID4 : CMOS
RGB666 data
RGB666 data
RGB666 clock
data
data
data
serial interface
serial interface
serial interface
interface
interface
interface
U13L
U13R
U14L
U14R
LCD-VSYNC :
LCD-HSYNC :
CSID6 : CMOS
LCD screen
LCD
GND : ground
GND : ground
GND : ground
LCD-DE : RGB666
data
serial interface
interface
(*)The XIO GPIO pins are provided by an I2C Expander at address 0x38 on the TWI bus 2, as
such, this address is not available on bus 2.
Mechanical Drawing
CHIP is open source hardware. Heres where you can get all the data you need to make, modify,
or learn about your own CHIP. Visit the CHIP Hardware git repository.
Making Stuff
CHIP is more than a cool, small, inexpensive computer. Its a complete system for building projects
that require remote control, network connectivity, and physical interfacing with people and the
environment. CHIPs pin headers have all the connections to make this happen. An annotated
diagram of the pin headers can be found in the hardware section of this manual.
GPIO
GPIO provides basic digital connections to the physical world to create physical products with
CHIP. These pins can act as reads or 'writes, for example, to sense switch positions or turn an
LED on or off.
CHIPs most easily available IO pins are the XIO pins on header U14. This is the GPIO
eXpander that uses an I2C bus to create eight (8) convenient pins for GPIO. These use
address 0x38 on the TWI bus 2. Other pins are available for GPIO if more than eight are needed.
CHIP has several General Purpose Input/Output (GPIO) pins available for you to build around. If
you want to access them in a very primitive way, just to confirm their existence, heres some things
to try.
Requirements
CHIP
LED
Jumper Wire
SSH or serial connection to CHIP or
Monitor and keyboard
There are eight (8) GPIO pins always available for connecting CHIP to the sense-able world. If you
orient CHIP with the USB connector pointed up, youll find the GPIO pins in the middle of the right
header, U14, Pins 13-20, labeled XIO-P0 to P7:
For various reasons related to the community nature of Linux development, the GPIO expander pin
numbers are different between CHIP OS kernels 4.3 and 4.4. What follows is a very technical
discussion of the GPIO access. If you just want to start making stuff and dont need low-level
information, you might just want to skip this section and go straight to the python library.
If you are developing applications on CHIP that use GPIO pins and you would like consistent
behavior between the two kernel versions, you need to know how to find out the base value for the
GPIO values. It may be enough for you to know that the GPIO expander pins start at 408 on 4.3
and 1016 on 4.4, however, it would be ideal to calculate this in your application to truly future-proof
for future kernels.
If you look in the directory /sys/class/gpio, youll find two directories starting
with gpio: gpiochip0 and either gpiochip408 (4.3) or gpiochip1016 (4.4).
The 408 and 1016 are the bases for the expander pins. If you want to definitively find out what the
base is using code, you should
cat gpiochip*/label
cat gpiochip*/ngpio
cat gpiochip*/base
The label you are interested in is the value pcf8574a which is the device that provides GPIO
expansion. This provides the number of GPIO as returned by ngpio. The first expander pin starts
with the basevalue. If you parse all these values and apply to your code, you can setup your
application to be kernel-agnostic for GPIO access.
BASE=`cat $BASE_FILE`
There is a sysfs interface available for the GPIO. This just means you can access the GPIO
states in a file-system-like manner. For example, you can reference XIO-P0 using this path:
/sys/class/gpio/gpio408/
The number is somewhat unfortunate, since the sysfs names do not match the labels on our
diagram! But is not too hard to translate. Pins XIO-P0 to P7 linearly map to gpio408 to gpio415 on
kernel 4.3 andgpio1016 to gpio1023 on kernel 4.4. See above to learn more about that
distinction.
These lines of code will let us read values on pin XIO-P7. First, we tell the system we want to listen
to this pin:
#4.3
cat /sys/class/gpio/gpio415/direction
#4.4
cat /sys/class/gpio/gpio1023/direction
Connect a jumper wire between Pin 20 (XIO-P7) and Pin 39 (GND). Now use this line of code to
read the value:
#4.3
cat /sys/class/gpio/gpio415/value
#4.4
cat /sys/class/gpio/gpio1023/value
Now that its in output mode, you can write a value to the pin:
#4.3
If you attach an LED to the pin and ground, the LED will illuminate according to your control
messages.
Enough IO
When you are done experimenting, you can tell the system to stop listening to the gpio pin:
#4.3
Learn More
Python Library
There is a well-maintained python library that works for 4.3 and 4.4 kernels available here. This is
analogous to the RPi.GPIO library, but is designed for CHIP. Its an excellent place for quickly
working with GPIO and PWM on CHIP.
GPIO Types
There are many types of sensors that can be used with GPIO:
Switches
Switches provide on/off state input from the physical world to your computer. You can use the
commandline interface to listen to switch values. A python library was created for
the ChippyRuxpin project if you need a higher-level example in python.
LEDs
LEDs can be illuminated and turned off using the commandline interface. Refer to
the ChippyRuxpin project on a good example on how to manipulate the commandline using
python.
Relays
Relays are special hardware bridges used to switch higher voltage electronics, protecting CHIP
from the high voltages that would destroy it. Using a relay board is programmatically no different
from using switches.
Expanding GPIO
If you dont need to drive an LCD, you can use those pins for more, faster GPIO if you want to.
These are the pins numbered 18-40 on U13 and 27-40 on U14 to act as GPIO to increase the
number of available GPIO pins. Documentation on this process is forthcoming!
Pin 9 on header U14 provides a link for low resolution analog to digital conversion (ADC). There is
no driver for this link yet. ADC is used to read continuous sensors (temperature, pots, FSR,
photoresistor, etc)
1 Wire
The 1 Wire serial protocol is not available in CHIP OS 4.3. In version 4.4 and above, you can
access one wire data from the sysfs device. Find your one wire devices with
ls /sys/bus/w1/devices/2*/eeprom
The * is there because your eeprom device will register a unique UUID number with C.H.I.P., so
the ls command will show you all available one wire devices.
UART
UART connections can be made using the UART connections on header U14.
PWM
Pulse Width Modulation is used to control motors and other devices. It is possible to use GPIO
pins to drive motors, but they generally are not fast enough for robust and smooth control. PWM
can be accessed through an sysfs protocol.
I2C
I2C can be accessed through a sysfs protocol using the debian i2c-tools. In the terminal, use
sudo apt-get install i2c-tools
Note that the XIO GPIO pins are provided by an I2C expander at address 0x38 on the TWI bus 2,
so that address cannot be used on bus 2.
Using the numerous LCD header pins, a color touchscreen panel can be directly implemented on
CHIP.
Project Examples
Projects coming soon!
C.H.I.P.
Instructions
If you dont have the Google Chrome or the open-source Chromium browser on your other
computer, install it by following the preceding links.
Ok, good. Now that you have installed the browser, you can visit flash.getchip.com in Chrome or
Chromium and follow all the instructions. If you are using a computer with USB3 ports, its
suggested that you attach a USB2-compliant hub and connect your CHIP to the hub, instead of
directly to the USB3 port.
Its possible to run the entire operation online. There are also options for downloading the OS
image to your computers harddrive, then flashing your CHIP with no additional need for internet
access.
You may not want to use the browser-based flashing procedure. If this is the case, or you need
additional tools, you can flash using the CHIP SDK
Before you try anything else, try using a different USB cable. Many cables are charging-only, or do
not support high bandwidth and will cause flashing to fail.
Windows-specific
Unfortunately, due to the nature of how Windows manages drivers, the flashing procedure will
likely fail the first time you use it. When that happens, try completely closing and reopening your
browser. Depending on your version of windows, this might happen twice, once when waiting for
FEL, and then again waiting for Fastboot.
Troubleshooting
If you get stuck Waiting for Fastboot and the above options dont work, you should be able
to install a headless no fastboot image. However, it will take quite a bit longer, and the
Operating System wont have a GUI.
MacOS specific
There are some times where using USB3 ports will cause the flashing to fail. If you can, try
using a USB2 port, not a USB3. Recent Macs have only USB3 ports. If you find yourself
with a modern Mac, try using a USB2 hub in your USB3 port and plug C.H.I.P. into that.
If you get stuck Waiting for Fastboot and the above options dont work, you should be able
to install a headless no fastboot image. However, it will take quite a bit longer, and the
Operating System wont have a GUI.
Linux-specific
Linux requires permissions to write to C.H.I.P. when its plugged into your computer. Chrome (or
Chromium) does not have these permissions, so you need to explicitly create them before youll be
able to use the web flasher .
On Ubuntu:
You need to paste the following into a terminal:
sudo usermod -a -G dialout $(logname)
sudo usermod -a -G plugdev $(logname)
# Create udev rules
The udev rules then map the usb device to the groups.
For more information, check the systems group page on debian.org.
USB3 Issues * If you have any issues, try using a USB2 port and not a USB3 one, or try using a
USB2 hub in your USB3 port and plug C.H.I.P. into that. * If you get stuck Waiting for Fastboot
and the above options do not work, you should be able to install a headless no fastboot image.
However, it will take quite a bit longer, and the Operating System wont have a GUI.
Caveat In rare cases, you may have an issue with your computer putting C.H.I.P. into autosuspend mode. Here is an example on how to fix this problem:
apt-get install laptop-mode-tools
AUTOSUSPEND_RUNTIME_DEVID_BLACKLIST="1f3a:efe8"
reboot
Advanced
For those interested in building with a stripped-down version of an operating system, or looking to
customize CHIP from the command line, we have several tutorials that describe how to setup
CHIP with more depth.
CHIP-SDK has everything needed to develop software for C.H.I.P. Most importantly, if you want to
load an operating system onto CHIP, the only supported way is to do this from a virtual machine.
Given that the virtual machine runs Ubuntu, its pretty safe to say that Ubuntu users can flash
without the virtual machine.
Requirements
Software Setup
There are several required software pieces to get the CHIP SDK virtual machine running.
Install VirtualBox and Extensions
If you are using Windows, you need to add the VirtualBox installation directory to your
Install Vagrant
Install Vagrant from the Vagrant site. Alternatively, if OS X, you can use the homebrew package
manager: brew install caskroom/cask/brew-cask brew cask install vagrant
Install Git
Installation of Git depends on your operating system:
vagrant ssh
Troubleshooting
folder can no longer be mounted, update the guest additions by typing the following in the CHIPSDK directory on the host:
This blog post has some more tips on keeping additions in sync.
Invalid State
If you get an error like:
error: The guest machine entered an invalid state while waiting for it to boot.
This probably means your version of VirtualBox needs updating and/or needs the Extension Pack.
Update as necessary and try vagrant up again.
Couldnt Find File
If you get the error:
error: Couldn't open file /Volumes/Satellite/gitbins/CHIP-SDK/base
that means you didnt cd CHIP-SDK. Very basic, perhaps, but late nights sometimes need that
bump!
You may have been working with CHIP for a while now, and you want to updated your SDK. Its
only slightly more involved than sync'ing with the git repo; you have to update the virtual machine,
too.
Requirements
How To Update
Just follow these steps:
On your host operating system, pull the latest changes from our Git repository:
cd ~/CHIP-SDK
git pull
Make sure the virtual machine is shut down and update it:
vagrant halt
vagrant provision
Now you can boot the virtual machine and ssh into it:
vagrant up
vagrant ssh
Once you see the trusty prompt, your CHIP SDK virtual machine is ready to use:
vagrant@vagrant-ubuntu-trusty-32:~$
All The Commands At Once
Heres all the commands in one place:
cd ~/CHIP-SDK
git pull
vagrant halt
vagrant provision
vagrant up
vagrant ssh
Now that the virtual machine and SDK are running and configured, you can connect CHIP to your
computer and give it an operating system. If you want to flash using a native Ubuntu installation,
read how toprepare Ubuntu to flash
Have you repaired your CHIP?
The original batch of CHIPs shipped with a software bug in the NAND flash storage. Weve built a
repair tool.
Note: this jumper needs to be present only when you connect CHIP to power. If for some reason
the wire becomes disconnected after you have powered CHIP, there is no problem or need to
panic.
Now connect CHIP to your computer with a micro-USB->USB-A cable. The power LED will
illuminate.
You can add additional software before you flash CHIP by customizing buildroot. To flash CHIP
with the buildroot OS:
cd ~/CHIP-tools
./chip-update-firmware.sh -f
The -f option means fastboot. If you have problems flashing, particularly on Windows or OS X,
you can run ./chip-update-firmware.sh to disable fastboot flashing.
During flashing, the terminal will fill with messages. If successful, youll see C.H.I.P. run through a
hardware test, with the answers being OK. If C.H.I.P. is 'OK, you can remove the jumper wire.
Here is asample successful output.
Option 2: Flash With Debian
If you want to flash CHIP with the debian OS with no window manager or GUI
cd ~/CHIP-tools
./chip-update-firmware.sh -d -f
The -f option means fastboot. If you have problems flashing, particularly on Windows or OS X,
you can disable fastboot by leaving off the -f option: ./chip-update-firmware.sh -d. Here is
a sample successful output.
./chip-update-firmware.sh -d -b stable-gui -f
During flashing, the terminal will fill with messages. If successful, youll see C.H.I.P. run through a
hardware test, with the answers being 'OK. If C.H.I.P. is 'OK, you can remove the jumper wire.
Here is asample successful output. Because of filesize, the gui option must also include the f fastboot option. Windows and OS X are not yet supported as flashing hosts.
Connect to CHIP and Do Something
If everything went OK, you can now power up your CHIP again and connect via serial as a USB
gadget:
You can login to CHIP as chip or root using the password chip.
and even test the hardware:
hwtest
Customize Buildroot
If you want to customize buildroot, use these commands before you run the ./chip-updatefirmware.sh script to flash CHIP with firmware:
cd ~/CHIP-buildroot
make chip_defconfig
make nconfig
The nconfig command will display a text interface in your terminal. Use your arrow keys to
browse and select additional software for the buildroot OS. When youre finished with your
selections, exit by hitting the F9 key, which will automatically save your custom buildroot to:
/home/vagrant/CHIP-buildroot/.config
Now lets build your buildroot with your custom additions: shell make This will take a while,
maybe an hour. When finished, flash CHIP with the script:
cd ~/CHIP-tools
BUILDROOT_OUTPUT_DIR=../CHIP-buildroot/output ./chip-fel-flash.sh
Unless you changed the users or passwords, you can login to CHIP as chip or root using the
password chip.
Appendix
Sample outputs are provided in this appendix so you can more easily troubleshoot or proceed with
confidence when flashing CHIP with firmware.
Buildroot Output
Sample output from flashing Buildroot to CHIP looks like:
ROOTFS_URL=http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stabl
e/71/images
BUILD=71
BR_URL=http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71
/images
BR_BUILD=71
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/rootfs.ubi
MD5: 90315ca1fb8ff95fc6878ce8126bdf02
S3_MD5: 6d59af4a0f673e1d61147e4a06dd7ba8
md5sum differs
--2015-10-21 15:59:16--
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/rootfs.ubi
Resolving opensource.nextthing.co.s3.amazonaws.com
(opensource.nextthing.co.s3.amazonaws.com)... 54.231.176.13
Connecting to opensource.nextthing.co.s3.amazonaws.com
(opensource.nextthing.co.s3.amazonaws.com)|54.231.176.13|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 54525952 (52M) [binary/octet-stream]
1.83MB/s
in 29s
/home/doge/gits/CHIP-tools/.firmware/images/sun5i-r8-chip.dtb exists...
comparing to
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/sun5i-r8-chip.dtb
MD5: de0beb674eeb382901251febfbf1cf9b
S3_MD5: de0beb674eeb382901251febfbf1cf9b
file already downloaded
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/sunxi-spl.bin
MD5: dd3f9c9c0984a6c1d7cdca2921f6f448
S3_MD5: dd3f9c9c0984a6c1d7cdca2921f6f448
file already downloaded
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/uboot-env.bin
MD5: 6f2b79a781f9f490911012ec3aa653e9
S3_MD5: 6f2b79a781f9f490911012ec3aa653e9
file already downloaded
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/zImage
MD5: 0d35ad764564a2cee9281715823597a2
S3_MD5: 0d35ad764564a2cee9281715823597a2
file already downloaded
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/u-boot-dtb.bin
MD5: 97340d221bcbcc8f0bf27e26adc26f0a
S3_MD5: 97340d221bcbcc8f0bf27e26adc26f0a
file already downloaded
BUILDROOT_OUTPUT_DIR = /home/doge/gits/CHIP-tools/.firmware
== preparing images ==
PADDED_SPL_SIZE=0x000000c6
35+1 records in
flash CHIP
Image Type:
Created:
Data Size:
00000000
== upload u-boot ==
100% [============================================================]
== execute the main u-boot binary ==
== write ubi ==
flashing................OK
login... OK
password... OK
poweroff... OK
Debian Output
Sample output from a successful Debian output:
debian selected
ROOTFS_URL=http://opensource.nextthing.co.s3.amazonaws.com/chip/debian/stable/3
7
BUILD=37
BR_URL=http://opensource.nextthing.co/chip/buildroot/stable/71/images
BR_BUILD=71
http://opensource.nextthing.co.s3.amazonaws.com/chip/debian/stable/37/rootfs.ub
i
MD5: 6d59af4a0f673e1d61147e4a06dd7ba8
S3_MD5: 90315ca1fb8ff95fc6878ce8126bdf02
md5sum differs
--2015-10-21 16:06:36--
http://opensource.nextthing.co.s3.amazonaws.com/chip/debian/stable/37/rootfs.ub
i
Resolving opensource.nextthing.co.s3.amazonaws.com
(opensource.nextthing.co.s3.amazonaws.com)... 54.231.160.10
Connecting to opensource.nextthing.co.s3.amazonaws.com
(opensource.nextthing.co.s3.amazonaws.com)|54.231.160.10|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 245366784 (234M) [binary/octet-stream]
in 2m 11s
http://opensource.nextthing.co/chip/buildroot/stable/71/images/sun5i-r8chip.dtb
MD5: de0beb674eeb382901251febfbf1cf9b
S3_MD5: de0beb674eeb382901251febfbf1cf9b
file already downloaded
to http://opensource.nextthing.co/chip/buildroot/stable/71/images/sunxi-spl.bin
MD5: dd3f9c9c0984a6c1d7cdca2921f6f448
S3_MD5: dd3f9c9c0984a6c1d7cdca2921f6f448
file already downloaded
to http://opensource.nextthing.co/chip/buildroot/stable/71/images/uboot-env.bin
MD5: 6f2b79a781f9f490911012ec3aa653e9
S3_MD5: 6f2b79a781f9f490911012ec3aa653e9
file already downloaded
S3_MD5: 0d35ad764564a2cee9281715823597a2
file already downloaded
MD5: 97340d221bcbcc8f0bf27e26adc26f0a
S3_MD5: 97340d221bcbcc8f0bf27e26adc26f0a
file already downloaded
BUILDROOT_OUTPUT_DIR = /home/doge/gits/CHIP-tools/.firmware
== preparing images ==
PADDED_SPL_SIZE=0x000000c6
35+1 records in
flash CHIP
Image Type:
Created:
Data Size:
00000000
== upload u-boot ==
100% [============================================================]
== execute the main u-boot binary ==
== write ubi ==
flashing...........................OK
login... OK
password... OK
poweroff... OK
Failure
There are a couple common errors that occur when flashing.
The first is a that CHIP is not in fel mode, ready to receive firmware. There are three possible
reasons for this:
You already successfully flashed CHIP, and havent disconnected the USB cable from your
The jumper wire between Pins 7 & 39 is either not present, loose, or the jumper is in the
computer.
wrong holes.
Youll know this is the problem when you see this error in the terminal window:
== upload the SPL to SRAM and execute it ==
ERROR: Allwinner USB FEL device not found!
== upload images ==
The other common error is that you need to run the chip-update-firmware.sh script with sudo (or
you need to add a rules file as described in the next section). This error looks like this in your
terminal window:
ERROR: You don't have permission to access Allwinner USB FEL device
== upload images ==
ERROR: You don't have permission to access Allwinner USB FEL device
ERROR: You don't have permission to access Allwinner USB FEL device
ERROR: You don't have permission to access Allwinner USB FEL device
ERROR: You don't have permission to access Allwinner USB FEL device
== execute the main u-boot binary ==
ERROR: You don't have permission to access Allwinner USB FEL device
Option: Flash Without sudo
As a developer, theres a good chance youll flash CHIP more than once in your life. Youll
probably want to follow these steps. In order to be able to run the chip-update-firmware.sh script
without sudo, make a rules file:
then, to make this rules file work: shell sudo udevadm control --reload-rules
If you are running Ubuntu OS on your computer, and dont want to bother with a virtual machine,
you can flash CHIP from your real computer. A generous member of our forums created a script
that duplicates the below steps in a convenient package. You can get it from github. Please note
that this is not supported or maintained by Next Thing - we only link to it here for your potential
convenience.
Requirements
CHIP
Jumper wire
Install Dependencies
Install some tools:
If you get an error that the repository android-tools-fastboot cant be found, you are probably
booting from an Ubuntu Live CD (or USB stick). Youll need to add a repository so you can install
the android-tools-fastboot:
If you intend to customize buildroot with additional software, install these packages:
sudo apt-get install libncurses5-dev libc6-i386 lib32stdc++6 lib32z1
sudo rm -f /usr/local/bin/fel
If you have already cloned the CHIP-tools from a previous CHIP flashing, you can, of course, just
update your existing repository
cd CHIP-tools
Youll also need to add your user to some groups and add a udev rule shell sudo usermod -a
-G dialout $(logname) && sudo usermod -a -G plugdev $(logname) &&
sudo rm -f /usr/local/bin/fel
cd ..
WiFi Connection
Below are detailed instructions for connecting to Wi-Fi networks using two different command line
protocols: nmcli and connman. If you are using the CHIP OS that comes installed on CHIP, or you
have flashed with our Debian distribution, youll want to use the first section about connecting
with nmcli. If you have flashed CHIP with our buildroot OS, youll need to use connman.
There are several tools in Linux for connecting and configuring networks. We will be using the
command nmcli (Network Manager Client). You may see other tutorials that reference iw or
iwconfig, however, these tools are not recommended for C.H.I.P. You can read more about nmcli
on the internet.
Requirements
You will need one of these scenarios:
SSID
MODE
CHAN
RATE
SIGNAL
BARS
SECURITY
11
54 Mbit/s
100
--
Infra
54 Mbit/s
30
___
WPA1 WPA2
Infra
10
54 Mbit/s
44
__
WPA1 WPA2
NextThing HQ
Infra
NextThing Shop
2WIRE533
sudo nmcli device wifi connect '(your wifi network name/SSID)' password '(your
wifi password)' ifname wlan0
sudo nmcli con add con-name 'mywifi' ifname wlan0 type wifi ssid '(your wifi
network name/SSID)'
which outputs a list of the various network devices and their connections. For example, a
successful connection would look like this:
DEVICE
TYPE
STATE
CONNECTION
wlan1
wifi
disconnected
--
wlan0
ip6tnl0
lo
sit0
wifi
ip6tnl
loopback
sit
connected
unmanaged
unmanaged
unmanaged
NextThing HQ
----
Because it is worth knowing that Linux offers many ways of doing things, another command that
shows your current active connection is
nmcli connection show --active
which outputs like so:
NAME
NTC
UUID
59962bac-3441-437b-94ea-bf31dee66e8f
TYPE
802-11-wireless
DEVICE
wlan0
After you have connected once, your C.H.I.P. will automatically connect to this network next time
you reboot (or start NetworkManager services).
Test
Finally, you can test your connection to the internet with ping. Googles DNS server at the IP
address 8.8.8.8 is probably the most reliable computer on the internet, so:
ping -c 4 8.8.8.8
results in output like:
You can stop this command by pressing CTRL-C on your keyboard. The -c 4 option means it will
happen only 4 times.
You may want to prevent auto-connection to a network, so you can use this command to forget a
network:
Troubleshooting
Here are a few possible problems with connections.
No network found
Not much to say about that. If theres no network, you cant connect. Go find a network!
Incorrect password
If you type in the wrong password, youll get some errors like this:
[32258.690000] RTL871X: rtw_set_802_11_connect(wlan0) fw_state=0x00000008
[32258.800000] RTL871X: start auth
can connect to a wireless network, but have no access to the internet, so youd see a connection
when you request device status, but have a failed ping. This indicates a problem or restriction with
the router or the access point, not a problem with the CHIP.
A failed ping looks something like:
From 192.168.2.56 icmp_seq=14 Destination Host Unreachable
From 192.168.2.56 icmp_seq=15 Destination Host Unreachable
From 192.168.2.56 icmp_seq=16 Destination Host Unreachable
The Network Manager will periodically try to reconnect. If the access point is restored, youll get
something like this in your terminal window:
If you try to use nmcli and you get an error that it is not found or is not a command, chances are
that you are using the CHIP buildroot image. The nmcli commands only apply to CHIPs running
CHIP OS or Debian linux.
The buildroot operating system uses the connman command-line network manager to connect and
manage your network connections. If you are using CHIP OS (or Debian), you will find
that connman is not installed - youll need to use nmcli.
If you want all the details of connman visit the ArchLinux wiki.
Requirements
NTC
wifi_7cc70905cd77_4e5443_managed_psk
NTC Guest
wifi_7cc70905cd77_4e5443204775657374_managed_psk
ATT312
wifi_7cc70905cd77_hidden_managed_psk
wifi_7cc70905cd77_hidden_managed_none
wifi_7cc70905cd77_415454333132_managed_psk
HP-Print-99-LaserJet 1102
wifi_7cc70905cd77_48502d5072696e742d39392d4c617365724a65742031313032_managed_no
ne
ATT344
CBCI-1B57-2.4
wifi_7cc70905cd77_415454333434_managed_psk
wifi_7cc70905cd77_434243492d314235372d322e34_managed_psk
mi-fi
0024A5D8CF33
wifi_7cc70905cd77_6d692d6669_managed_none
wifi_7cc70905cd77_303032344135443843463333_managed_psk
Twirl-Eco-Events-2.4
wifi_7cc70905cd77_547769726c2d45636f2d4576656e74732d322e34_managed_psk
xfinitywifi
wifi_7cc70905cd77_7866696e69747977696669_managed_none
If your network is not password protected, youll get some output that will indicate a successful
connection, such as:
[
[
[
[
[
[
[
fw_state=0x00000008
kid:0, type:AES
[
type:AES
and now use the connect command (your network name will be different than whats below of
course)
connect wifi_7cc70905cd77_4e5443_managed_psk
Now that you are connected to a wireless network, you can exit connmanctl interactive mode by
typing
quit
All The Commands In One Place
Heres all the commands in one place:
connmanctl
agent on
connect wifi_7cc70905cd77_4e5443_managed_psk
quit
If your connection is not successful, then ping will tell you your network is down:
PING 8.8.8.8 (8.8.8.8): 56 data bytes
ping: sendto: Network is unreachable
Troubleshooting Connection Problems
Youll need to make sure you used the right network when you used the connect
commnand.
Review any messages that the connect commnand gave you. Did they look like the
If everything checked out until you got to ping, theres a good chance the problem is with
wifi_7cc70905cd77_4e5443_managed_psk
Disconnected wifi_7cc70905cd77_4e5443_managed_psk
Generally, conman will remember and cache setup information - if you reboot in the vicinity of a
known network, it will attempt to connect. However, if you need to forget a network setup, these
setups can be found by navigating:
cd /var/lib/connman/
You can delete a single connection by seeing what connections are stored
ls /var/lib/connman/
(the -r is needed because these are directories you are deleting, and the star at the end
of wifi* assumes your configurations all start with the string wifi)
For Advanced Users
Its worth noting that youll see two wireless networking interfaces if you list them with
ifconfig
connman is configured to see only the physical interface wlan0 which simplifies setup. We do this
with a blacklist, which can be modified at /etc/connman/main.conf
Getting simple audio playback working on CHIP is pretty easy, once you install the correct
packages and enable audio output. In the code examples below, weve inserted the && characters
at the end of lines so you can copy and paste the entire block into a terminal window and execute
each line in series. If you are using CHIP OS, sound output is already configured and working.
However, you may be running a simple version of Debian or buildroot, so these instructions will
help you get sound working on CHIP.
Requirements
CHIP
Setup CHIP
This will install alsa and some utilities for playing sound from the command line. Once those have
installed, youll need to make the outputs active for sound
alsamixer
will open up a simple interface. Use the left and right arrow keys on your keyboard to select among
the items, and use the up/down keys to change the options:
Play a Sound
https://upload.wikimedia.org/wikipedia/commons/d/db/Descending_thirds.wav
If wget returns command not found you can install it:
sudo apt-get install wget
We can finally play the sound and hear it over CHIPs headphone jack:
aplay test.wav
If you want to play mp3 or ogg files, you can install mplayer:
sudo apt-get install mplayer
wget -O test.ogg
https://upload.wikimedia.org/wikipedia/commons/e/e7/Agogo.ogg &&
mplayer test.ogg
lq.mp3 &&
mplayer test.mp3
Record A Sound
If you want to try the audio input, you need to connect audio input to header U14, pins 06 &
12 or modify CHIP to use audio in on the TRRS connector. Once you have an audio signal going
into CHIP, you can test it out by recording a three second (-d 3) WAV file with arecord:
arecord -f cd -d 3 -D hw:0,0 chipaudioin.wav
More Packages
Developers that want to use sound will probably want to download these packages:
sudo apt-get install portaudio19-dev &&
sudo apt-get install swig &&
In this tutorial, well describe how you can use the USB port to add more storage with a thumb
drive, hard drive, card reader, or whatever else. You can then copy, store, and edit files on the
storage device, extending the capability of CHIP.
This tutorial is suitable for the buildroot image. If you are following this for other Linux distributions,
there are some adjustments that youll need to make for paths, permissions, and enabling 'sudo.
With buildroot, you work as the root user, so this tutorial is appropriately terse.
Requirements
Computer running OS X 10.10+, Ubuntu 14.04+, or Windows 7+ (to format USB device, if
needed)
First, youll want to format the drive as an MS-DOS (FAT), NTFS, or ext3 volume. You can do this
on another computer.
Once formatted, insert the drive into CHIPs USB port. Enter the command
dmesg
[ 4954.590000] scsi 0:0:0:0: Direct-Access USB Flash Memory 1.00 PQ: 0 ANSI: 2
Notice the second to last line. This tells you the device location for the drive. Storage devices
generally have device names that start with sd. If you want to see all the storage devices
attached to CHIP, you can use a wildcard to display all devices that start with sd:
ls /dev/sd*
With one thumb drive attached, it appears as two devices: the device itself (sda), and the storage
partitions (sda1). There is only one partition on this drive.
Another way to find storage devices is the command
blkid
which lists them, along with the names you might have initialized them with:
/dev/sda1: LABEL="TEST" UUID="6668-11E9"
Now that you know where your partition is, its time to mount the partition so you can access the
files.
Now you can navigate to the drives directory and see all the files in the drive:
cd /drives
ls
If you want to remove the drive from the USB port on CHIP, its best to unmount it:
sudo umount /dev/sda1
Youll probably want to mount this drive automatically next time you use it, though. We can set that
up with a quick modification to the fstab (file system table) document:
vi /etc/fstab
Getting around vi is not very intuitive. If you are new to it, heres a quick guide on getting this text
into the fstab document:
type : (colon),
If theres an error, double check the fstab file and make sure it has the line /dev/sda1 /drives
vfat defaults 0 0 at the end. If its successful, youll be able to view, modify and copy the files
on the disk:
ls /drives
Now, if you reboot , the drive will mount automatically. If you remove the drive, then insert it again,
youll need the command
mount -a
CHIP has built-in Bluetooth and uses the bluez 5 stack for implementing connections and devices.
This tutorial instructs how to use a Bluetooth keyboard, since it is a simple and obvious example.
There are, of course, several types of Bluetooth devices, such as earpieces, audio connectors,
vacuum cleaners, and more. Future tutorials (search our bbs will cover those devices, but the
keyboard is a good introduction to the commands and an easy way to test your system.
Requirements
CHIP
Important!
Start with a CHIP completely unplugged and powered down. Add power and boot up. A known
limitation is that after reboot, CHIPs Bluetooth controller may not work until you power and
physically disconnect from a power source.
About bluetoothctl
Well be using the command bluetoothctl to find, pair with, and connect to devices.
In the terminal, type
bluetoothctl
This starts up bluetoothctl in interactive mode. You should see output like
[NEW] Controller 7C:C7:08:05:CD:77 BlueZ 5.27 [default]
[NEW] Device 60:33:4B:13:A7:45 nyb
which is a list of MAC addresses of CHIPs Bluetooth controller chip (the first line) and any other
devices that have been paired with CHIP in the past. Use the help command - it lists all the very
useful commands in the bluetoothctl interactive mode.
In Bluetooth interactive mode, use the command
power on
which outputs
which will start printing MAC addresses and names (if available) of Bluetooth devices in your
vicinity.
Pair to a device with the MAC address and the pair command:
pair 1C:1A:C0:85:5E:2C
This may fail if the device is powered off, goes out of range, or your toddler spills water on it.
Heres what failure looks like:
As the scan continues, youll eventually see the device you are interested in, so copy that MAC
address and type:
pair 15:03:26:A0:26:26
Some Bluetooth devices need user input to pair. In that case, youll need to turn the agent 'on so
the device can post a password, and you can enter it:
agent on
will output
Agent registered
pair DC:2C:26:D7:B6:8F
will output
Now you can use the Bluetooth device to enter the PIN code, then hit enter. The terminal will give
some status about the pairing:
00001000-0000-1000-8000-00805f9b34fb
00001124-0000-1000-8000-00805f9b34fb
00001200-0000-1000-8000-00805f9b34fb
Now that you have paired the Bluetooth device, you wont have to do that again. However, the
device still needs to be connected:
connect 15:03:26:A0:26:26
/devices/platform/soc@01c00000/1c28c00.serial/tty/ttyS1/hci0/hci0:4/0005:05AC:3
232.0001/input/input1
Trust between people leads to understanding and perhaps even harmonious living. Trust between
bluetooth devices means that you wont have to connect the device every time its near. Which is a
sort of harmony, I suppose. Once you have connected a bluetooth device to CHIP, if you intend to
use it again, you can trust it:
trust 15:03:26:A0:26:26
You may want CHIP to not pair or connect to a device - perhaps the conveniently trusted device
needs to be freed for another connection. Whatever the reason, if you want to remove your
Bluetooth device,
remove 15:03:26:A0:26:26
Troubleshooting
If your Bluetooth controller module on CHIP is not functioning, you can easily find the problem.
Type
bluetoothctl
Then theres a problem with CHIP recognizing the Bluetooth module. Read the very first
instructions at the top of this tutorial.
Install X-windows
Requirements
Installation (xfce4)
It might take some time to download and install all the packages, since there are a lot of
dependencies and libraries involved. Once installed, start the windowing system with the command
startx&
(the & runs Xwindows in the background, so you can still use your terminal). After a minute or so,
youll get an image on the monitor:
Now you can use a mouse and keyboard to explore CHIP and launch programs.
Troubleshooting
If you get errors from apt that report unmet dependencies, you can run the command
sudo apt-get install -f
which will force installation of any alternate or missing dependencies of any installed packages.
PureData is a graphical programming environment, primarily for making audio and multimedia
applications. This tutorial describes how to build the vanilla version of PD. This is a very
rudimentary version of PD - it does not compile or build the extras objects, such as bob~ or
expr~.
Get Source
First, download and un-archive the source from Miller Puckettes website:
wget http://msp.ucsd.edu/Software/pd-0.46-7.src.tar.gz
gzip -d pd-0.46-7.src.tar.gz
tar -xvf pd-0.46-7.src.tar
Install Dependencies
Now, youll need to install all the dependencies and make a symbolic link to wish:
sudo apt-get update
jack
Build It
Youre ready to go ahead and build, running some scripts, then making the install:
cd ~/pd-0.46-7/
./autogen.sh
Youll probably also want the extra objects such as expr, expr~, clone, fiddle~, bonk~, bob~,
sigmund~, et al. These require an extra build step. The extra folder is in pd-0.46-7/extra, so if
you are still insrc/ you can
cd ../extra
make install
Youll probably also want to install the deken plugin so you can add more externals to your bag of
tricks: https://github.com/pure-data/deken
Ive also found this kiosk plugin to be very handy for making a pure data widow take up the entire
screen: https://puredata.info/downloads/kiosk-plugin
Set Up Priority
Now set up pd so it can run in real-time priority mode for low latency (launching with pd -rt). This
is mostly about giving audio the necessary thread priority and giving the chip user access:
sudo nano /etc/security/limits.conf
Navigate to the end of the file (CTL-V) and add the lines
@audio - rtprio 99
and save (CTL-X to exit, youll be prompted to save) Youll want to double check that
the chip user is in the audio group:
sudo adduser username audio
Then reboot CHIP:
sudo reboot
Test PD
Now test pd with a test patch. Open a terminal and use this command, which should result in a
sine wave:
wget http://log.liminastudio.com/wp-content/uploads/2012/06/testPatch.pd_.zip
unzip testPatch.pd_.zip
If you need to test out a midi controller to make sure data is coming into CHIP, you can do this
from the terminal. Youll want to list the connected devices, if not just to get the port name as ALSA
sees it.
amidi -l
Example output might look like shell Dir Device Name IO hw:1,0,0 DS1 MIDI 1
You can then use the command to display MIDI data bytes (in hex) in the terminal window:
amidi -p hw:1,0,0 -d
Uninstall
Run PD
You can then use the mouse and keyboard to go through the Browser and learn more about PD.
References
pd extended on RPi
Headless CHIP
One of the most amazing features of CHIP is that its insanely simple to use it as small, wireless
computer. Low power requirements, battery powered with charge management, and both WiFi and
Bluetooth connectivity makes CHIP easy to run as a headless, autonomous machine. Of course,
youll still want to access it and control it without a monitor or keyboard. You can control CHIP with
another computer and a serial or network connection. Heres how you do this.
Begin
If you want to use CHIP without a monitor or keyboard attached, theres a few ways to do this:
Requirements
CHIP
SSH
SSH (or Secure Shell) is a common way to control a computer remotely over a network. Youll
need to first get your computers network name or IP address before you can connect.
How to get your IP address.
The easiest way to get CHIPs IP address is to hook up a monitor and keyboard. Bootup, log
in, connect to the network if you need to, and use the command
hostname -i
which will output a lot of data. Look for the line wlan0 and the entry inet, something like:
inet 10.1.1.99
Connect to CHIP over a network
Now that you know your IP address, use the command:
ssh [email protected]
Youll be asked for CHIPs password. The default password is chip. This process is the same if
CHIP is connected to the network using built-in wireless or a USB-Ethernet adapter.
Make Connections To CHIP Easy
You may want to setup your network so it will always provide the same (static) IP address to CHIP.
You can then rely on CHIP always having the same IP address.
Alternatively, you can setup zero configuration networking to give your CHIP an easily
remembered name.
You are now free to do whatever it is you do with Linux command line on CHIP.
No wireless network
No USB-ethernet cable
Connect a USB to UART cable to the Ground (GND), Transmit (TX), and Recieve (RX) pins on
CHIP
Well find those on header U14, pin outs 1,3 and 5. See the following diagram, which assumes
CHIPs USB ports are pointed up
You may find other USB-UART cables that have more wires. There will be some labels that will
help you connect to the correct pins (GND, TX, RX) on terminal U14. Just be sure to check your
datasheets to make sure youre using the correct pins.
Install the driver
For this tutorial, we are using a PL2303 USB to Serial cable. If you are using this one too, youll
probably need to install the PL2303 driver for your computer.
Connect the Cable
You only need to worry about three of the wires:
The red wire carries voltage (+5 V). DO NOT USE THE RED ONE. Plugging in a +5 V pin could
damage your CHIP
Again, there is a chance your USB to UART cable may be different. Please check your data
sheets!
Simpler than the UART cable, you can connect to CHIP with a USB cable to your computer. Your
computer will see CHIP as a serial device as well as provide power to the CHIP. Either way, youll
be able to continue with the directions below.
Once youve connected CHIP to your computer with the UART or USB cable, open up a terminal.
Theres lots out there. Heres a few:
Linux: screen, cu
No matter the software, youll need to set some settings for the port (aka connection). Youll
probably only need to set the baud rate, as the others will be defaults:
Parity: none
Data Bits: 8
Stop bits: 1
Using screen
If you are using screen, the command will look something like this:
screen /dev/tty.usbserial 115200
or
What comes after the /dev/ may vary among different systems and connections. You can narrow
down the choices by using the command
ls /dev/tty*
booting chip, youll probably need to hit 'return on your keyboard a few times to get CHIP to send
some data to you and print in your terminal.
Youll then be prompted for login. Defaults are username root and password chip.
You are now free to do whatever it is you do with Linux command line on CHIP.
Using PuTTy
If you are on Windows using PuTTy, youll probably want to open the windows Device Manager to
get the COM name for the serial port. The device wont show up in the Ports list until after the
kernel loads and presents the device, so it may take a minute or so before Windows actually
detects it.
In the PuTTy configuration panel, you can now use the COM name to set it up. In this case, its
COM4:
Press Open to open a terminal window ,where you can log in to CHIP with username and
password chip.
You are now free to do whatever it is you do with Linux command line on CHIP.
You can make working with CHIP on a local network much more convenient by installing zero-conf
networking. OS X users may know this as Bonjour.
With zero-conf properly configured, your CHIP can be contacted using a name, such
as chip.local, rather than an IP. This is especially convenient, if you are moving CHIP to
different networks that might assign different IP addresses. The key technology for this in Linux is
the avahi set of tools. There are a few related packages, but this tutorial is a minimal installation to
get it up and running.
Requirements
CHIP
Install avahi
to install the necessary libraries. You may want to configure the daemon with this service file so
you can find Apple Bonjour devices from CHIP :
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
</service-group>
You can now find the hostname that you can use to reach CHIP:
hostname
Use Zero-Conf
From a terminal on another computer you can try accessing CHIP with the network
name chip.local
and enter the password (default is chip). Thats it. You can now reach CHIP without knowing the
IP.
If you have more than one CHIP on the network, or you just want to change the name from chip
to fit into your network name scheme, you can modify the hostnames file. Open the file in an editor:
sudo nano /etc/hostname
where youll see a single word chip. Just modify that line (for example, change it to
bobofettywap) and save the file. Youll also need to modify the hosts file where youll need to
change the first line127.0.0.1 chip where you replace chip with your new username.
sudo nano /etc/hosts
Finally, to get this new name to broadcast over the network restart avahi-daemon:
sudo /etc/init.d/avahi-daemon restart
Other packages
You may want to explore some of the other features of avahi, such as browsing a network for other
zero-configure enabled computers. Theres a package you can install:
sudo apt-get update &
which gives you a set of tools for browsing the network, such as the command
avahi-browse -d local _ssh._tcp --resolve -t
which will list other zero-configure-enabled devices on the local network. You could ssh to your
Macintosh named bananna, for example with
ssh username@bananna
Troubleshooting
or not known
then you either need to wait a minute or try installing avahi-daemon again, but pay closer attention
to any errors that apt-get returns.
If you cant connect to CHIP even though you are sure avahi is properly configured, confirm that
your CHIP and the computer you are trying to connect are on the same local network (and on the
same subnet).
FAQs
Frequently Asked Questions
Televisions are the most commonly available screen in the world and the vast majority of
Composite video can be integrated without adding licensing fees to the cost of C.H.I.P.
Composite is a very low profile connector, allowing us to keep the footprint of the board
small for people wanting to build C.H.I.P. into projects.
Yes! Not having a case for C.H.I.P. is one of the ways we are able to keep our costs down. As
makers, were excited to introduce people to the physical components of computers and show
them that electronics arent scary, theyre fun! We hope to spark curiosity and encourage people to
begin tinkering themselves.
With the VGA and HDMI adapters, C.H.I.P. is designed to work at 720p resolution, though the Mali
400 GPU is technically capable of up to 1080p outputs. The composite video connector operates
at the SD resolution of 640x480.
QUANTITY. Our partners at Allwinner worked hard to help us find how to reduce costs, so we
could introduce C.H.I.P. to EVERYBODY. To sell C.H.I.P. for $9, we need to order tens of
thousands of chips. By using common, available, and volume-produced processor, memory, and
wifi chips, we are able to leverage the scales at which tablet manufacturers operate to get
everyone the best price.
YES! Very open source! We are still in the process of testing and refining the whole C.H.I.P. family.
As we hit design completion, well release our design files. Weve already released quite a bit!
Check them out at our GitHub repo!
Technically, yes, but the components are soldered on and not intended to be swapped out. If you
really like reworking small BGA and fine pitch components, though, we wont stop you. :)
If you want additional storage, you can attach a USB drive!
Eight digital GPIOs, one PWM pin, SPI, TWI (I2C), UART, USB, CSI, Parallel LCD output,
touchpanel input, stereo audio out, mono audio in, composite video out, and a whole bunch of
power rails in and out.
Absolutely! The schematics and layout for the boards, both of C.H.I.P. and C.H.I.P.s adapters will
be released as they are finalized for production. From that, you can build whatever sort of adapters
or add-ons you want!
Not at this time. Because there is no onboard digital audio support from our processor, C.H.I.P.s
current design only has analog audio output via the headphone/composite jack. Adding a USB
sound card is the easiest way to beef up your CHIPs digital audio output options.
YES! C.H.I.P. comes with Linux installed, and a selection of our favorite programs and games. Like
any real computer, you can download more software and customize C.H.I.P.s applications and
operating system to suit your needs!
The easiest way to accomplish this is to power C.H.I.P. as usual via the microUSB port. Attach a
USB keyboard with an accessory USB port on it, then connect your wired mouse to that port.
Alternatively, a bluetooth keyboard or mouse can be used to free up the need for USB
connections.
For more advanced use cases, C.H.I.P. can be powered via its interconnects, leaving both the full
size USB and microUSB ports available to attach devices to.
Due to a lack of support for Silverlight (the back-end software that allows Netflix to be streamed) in
Linux, it is unlikely that Netflix will work on C.H.I.P. using entirely open-source software. This would
require someone to come up with an alternate back-end. That said, some very astute backers
have reported that Netflix should be possible by installing the Google Chrome browser, which
allows Netflix streaming via HTML5.
Yes! C.H.I.P. has a tiny power on-off button and a status LED on the board itself.
Were focused on individual uses of C.H.I.P. but what youre talking about is called clustering, and
may be possible A good place to start, if youre interested in clustering, is reading up on DebianBeowulf
C.H.I.P. has exposed CSI pins on its headers for integrating a camera directly to the processor, or
if drivers and sensor tuning sound like a bit much, you can always add a USB camera too.
You can connect a display through the 3.5mm () TRRS composite video port on C.H.I.P. If youd
like to connect to a vga or hdmi monitor, we have adapters available for that! You can also connect
any parallel LCD to the exposed display pins on C.H.I.P.s headers.
No. But by integrating reliable storage onto the device, were able to both save you a getting
started cost and allow Linux to come preinstalled on C.H.I.P. meaning its ready to go when it
arrives at your door. One of the big goals of this project is making C.H.I.P. easy to use, and this
goes a long way towards that end. If you need additional storage, its easy to add an SD card
reader or other USB storage with the built-in USB port.
YES! The 1/8" mini (TRRS) jack can be used either with a video-only cable, audio only cable,
headphones, headphones with mic, OR a combined Audio/Video composite cable. Pretty versatile
little port, isnt it!?
C.H.I.P. comes pre-loaded with some of our favorite open-source applications, and the ability to
install hundreds more. Whats even more exciting, though, is that if any given program isnt
supported out of the box, the community can work together to make it happen. Thats what we <3
about Open Source Software.
C.H.I.P. is a real computer, and can run software written in all kinds of programming languages,
so long as theres a compiler for them. Python, Java (via JDK8), Ruby, PHP, Squeak, C++, JS,
Assembly, BF.. even our favorite, ArnoldC, and lots lots more.
No, but adding an RTC is a great (and easy) hardware hack, for the folks that need it. For most
people, though, an RTC isnt necessary since it is easy to get C.H.I.P. to pull time from a remote
NTP server over wifi.
We are using a JST-2.0 PH 2-pin shrouded male connector to connect LiPo cells to C.H.I.P. In the
current design there are also BATT pins available on the interconnect headers, which allow
alternate battery connectors/placements when attaching C.H.I.P. to a custom PCBA.
You can find out more from the Allwinner R8 User Manual and the R8 Datasheet
Any single-cell (3.7V) LiPo battery will work with C.H.I.P. You can go bigger or smaller than
3000mAH as needed for your project!
No. But it does have built-in 802.11b/g/n wifi. But if you like wires, you can use a USB-Ethernet
connector.
Its a computer! It will tell you anything. If you want to find out more details about CHIPs processor,
use the command:
cat /proc/cpuinfo
: 0
BogoMIPS
: 1001.88
model name
Features
: 0xc08
CPU revision
: 2
Hardware
Serial
: 162542c10c427777
Revision
: 0000
507108 kB
MemAvailable:
382592 kB
MemFree:
Buffers:
298600 kB
0 kB
Cached:
92216 kB
Active:
98752 kB
Active(anon):
73180 kB
SwapCached:
Inactive:
Inactive(anon):
Active(file):
Inactive(file):
Unevictable:
Mlocked:
HighTotal:
HighFree:
LowTotal:
LowFree:
SwapTotal:
SwapFree:
Dirty:
Writeback:
AnonPages:
Mapped:
Shmem:
0 kB
64096 kB
5812 kB
25572 kB
58284 kB
0 kB
0 kB
0 kB
0 kB
507108 kB
298600 kB
0 kB
0 kB
0 kB
0 kB
70660 kB
37768 kB
8360 kB
Slab:
22784 kB
SUnreclaim:
11224 kB
SReclaimable:
KernelStack:
PageTables:
NFS_Unstable:
11560 kB
1176 kB
2240 kB
0 kB
Bounce:
WritebackTmp:
0 kB
0 kB
CommitLimit:
253552 kB
VmallocTotal:
507904 kB
Committed_AS:
VmallocUsed:
VmallocChunk:
615216 kB
14560 kB
482532 kB
Troubleshooting
CHIP Wont Boot or Startup
Problem: I attached a keyboard, monitor, and powered CHIP, but it does not do anything. The
LEDs are on, but I cant do anything with CHIP!
Fixes: Dont worry, your CHIP is probably fine. This can be fixed by reflashing CHIP from our web
flasher.
Problem: I attached a mouse and keyboard, and my CHIP suddenly turned off.
Fixes: Like most tiny computers, the USB port on CHIP provides a limited amount of power. When
you plug in a keyboard and an optical mouse, for example, they will draw too much current from
CHIP, not leaving enough for the processor. As a result, CHIP will immediately shut down. There
are a few ways to avoid this.
Use a bluetooth keyboard and mouse. Yes, this is a very specific solution, but a good one
when you are only using the USB port for keyboard and mouse. Keeps your desk cleaner
too!
Execute the command sudo axp209 --no-limit in the terminal before you attach your
USB peripherals.
Provide power from a supply connecting ground and 5V the pins headers 1 and 2 on U13.
Problem: My CHIP booted fine until it got to loading the desktop GUI, then it shut down.
Fixes: This is usually the result of an underpowered power supply. We recommend a 5V power
supply with a minimum 1A current rating.
You can find the current rating on your power supplys Output - it should read 1000
mA or 1A (or a higher number). You may need a magnifying glass to read it, but they all
should have this info on the label!
Instead of powering CHIP using the microUSB port, try using the header pins CHG-IN
(U13-2) and GND (U13-1).
Add a LiPo battery. This provides enough extra current and power buffer to prevent this
problem.
No Video Output
wrong TRRS arrangement: try different ends of your cable. Make sure is subscribes to this
PAL monitor: CHIP outputs NTSC format video by default. You can change this, however,
Video trace cut for mic in: This is pretty unlikely, but if you are working with a used CHIP,
it may be that the tip connector has been switched to work as a microphone input. Before
you do fix this with a bit of solder, take a close look at your board to see if there is evidence
of a score mark indicating the cut trace.
How to Contact Us
Compliance Statement
FCC ID: 2AF9F-HELLA1337
IC: 20863-HELLA1337
FCC
This device complies with part 15 of the FCC Rules. Operation is subject to the following two
conditions: (1) This device may not cause harmful interference, and (2) this device must accept
any interference received, including interference that may cause undesired operation.
Industry Canada
This device complies with Industry Canada license-exempt RSS standard(s). Operation is subject
to the following two conditions:
2. This device must accept any interference received, including interference that may cause
undesired operation of the device.
Cet appareil est conforme Industrie Canada une licence standard RSS exonrs (s). Son
fonctionnement est soumis aux deux conditions suivantes: 1. Cet appareil ne doit pas provoquer
d'interfrences 2. Cet appareil doit accepter toute interfrence reue, y compris les interfrences
pouvant provoquer un fonctionnement indsirable de l'appareil.
Information to User
CAUTION: Changes or modifications not expressly approved for compliance could void your
authority to operate this equipment.
Introduction
Welcome to Next Thing Co documentation.
CHIP is built for making - weve packed a powerful processor, 4 GB of storage, stereo audio, video
out, and lots of connections for playing and making your projects and products.
The CHIP Operating System is built for doing: browse the net, send email, play video games,
listen to music, write a novel, watch a video, or learn programming. And because its based on the
popular Linux Debian, if theres something you need, you can probably install it.
Add some power, turn on the wireless network, and even connect a bluetooth keyboard to get rid
of those annoying cables.
Power Up
The single most important thing to using any electronic device is getting electricity to the right
places. Were going to cover how to turn CHIP on. This might seem so straightforward that it
doesnt deserve several paragraphs, but CHIP is pretty clever, so theres actually a few things
worth knowing.
Whats It Need?
In general, CHIP is powered by a 5-volt source like a USB port or phone charger, and draws about
500mA peak (at boot time), runs on around 100mA, and rests with around 80mA with the
processor totally unloaded. To make sure you have enough headroom, we recommend that you
use a 5v power supply with at least 900mA current available. This may be more than you need to
know if you just want to plug it in to the wall, but, as you build projects with CHIP, youll be happy
to know theres a lot of ways to get the electricity flowing.
CHIP is silent. It doesnt take much energy, so its not very hot. It has no discernible smell. As a
result, many of your senses are not great indicators that it is working. There are two LEDs next to
the USB micro connector. When CHIP is on, you should see the PWR LED light up nice and bright.
The CHIPs microUSB connector is used to provide power from most any USB power source. USB
wall-wart adapters are probably littered all over your house. If for some reason you dont have one,
you can buy one at any electronics retailer. We recommend a 5V powersupply with at least 900mA
current available. Just plug a USB-A-to-microUSB-B cable (thats the same cable most phones,
tablets, and whatnot use to charge) into the wall-wart and CHIP, and youll see the PWR LED light
up. This CHIP is using the power from a computers USB port:
CHIP can also be battery powered. Specifically, any single cell (1S) 3.7V Lithium Polymer (LiPo)
battery with a 2-pin JST-PH 2.0mm end can be connected to the JST-PH socket.
The JST can only plug it in one way: if you are having a hard time lining things up, turn it around!
Needless to say, do not force the battery connector into the socket if something doesnt feel right!
Whats really great is that if you plug in to a charger and plug in a battery, the battery will charge all the power management is on CHIP itself. Roughly, it takes about four to six hours to charge a
3000 mAh LiPo battery from a 5V 1A power source. Also, our delightful little Power Management
IC, the AXP209, handles pass-through power, so while on and charging a battery, CHIP is
basically running on a un-interruped power supply If charge power fails, CHIP seamlessly
switches onto battery power without shutting off.
Connect To WiFi
Connecting to a WiFi network is easy using the WiFi icon the top right system tray. Just select a
network to initiate a connection. If the network requires a password youll be prompted for it.
If you need more control and information over your network connection, use the Settings->Network
Connections panel to show your connections. Double click on a connection to bring up the
connection editor:
Connect Bluetooth
Bluetooth device setup can be accessed using the Bluetooth icon in the top right system tray.
When you begin a connection, youll be guided through the necessary steps to connect to your
device. For example, when you pair with a keyboard, youll often be prompted for a code to enter
to ensure a unique connection. Once you have paired a device, future connections will usually be
automatic when the devices are in range and powered up.
You can manage, and also connect to, your devices using the the Bluetooth Devices panel,
accessed from the Bluetooth system tray:
One of the great powers of Linux is the so-called command-line. This simple text interface for
computing unveils many of the gears and levers that make a computer tick. Many find it easier to
get things done, as it is a focused and terse way to interact with the computer.
When you first use the Terminal Emulator program, you may quickly find that you do not have
permission to do something. That is because many commands are safely reserved for root
access, and you are automatically logged in as the chip user. Dont fear: you can often use
the sudo command and use the default password chip to execute these restricted commands.
Finally, it is probably wise to change the default password on your CHIP. You can do with
with shell passwd or shell sudo passwd root and youll be asked for a new password. Dont
forget it!!
If you are such a fan of the command line, you may want to boot with out the desktop and window
system. Instructions for that are here
One of the great things about Linux is the terminal application. While it may look unfriendly and
terse, if you want to really extend the capabilities of CHIP, youll often find yourself in the terminal.
If youre a beginner, heres a quick reference of some really important and common commands.
You can simply add -h to get some hints on how to use a command, such as cp -h or you can
read a manual page usingman cp. Most unix commands have a variety of options that can be
executed in the command with flags, such as ls -l -a. Even better, search the internet! This
primer is simply here to help you understand what a command might be doing, not to help you use
it to its full ability.
cd change directory. open a folder. ex: cd ~/Pictures changes your current directory to
mkdir make directory. create a folder. ex: mkdir Vacation makes a folder
the home Pictures folder, so you can easily access the files within.
ls list files in the current directory so you know what is in it. Some options are ls -l to list
in long format to provide information about permissions, size, and date. ls -a to show
hidden files that start with the . character.
mv move a file from one directory to another, or to give it a new name. Ex: mv this.one
that.one renames a file. mv this.one ~/Pictures/Vacation/ puts the file this.one into
the Vacation directory.
cp copy a file from one place to another. Ex: cp this.one this_01.one will
copy this.one to another file this_01.one. Add directories for more fun: cp
~/Pictures/Vacation/saturn.jpg
/Users/otherone/Pictures/Vacation/saturn.jpg.
rm remove a file. delete it, and beware!. Use the -r to make it recursive to delete a
sudo super user do. many commands need administrator-like privileges, otherwise they
wont work. apt-get is a command that needs to be run with sudo to allow files to be
written to protected directories. Youll see sudo as the first word in a lot of commands - all it
is doing is giving the command the necessary access. Youll be asked for a password the
first time you use sudo. The default password and user is chip.
apt-get the command used for installing, removing, and finding software for Debian Linux
systems, such as the CHIP Operating System. sudo apt-get install puredata installs
the Pure Data program and any dependencies. sudo apt-get remove puredata will
remove the program. sudo apt-cache search image will search apt repositories for the
pwd present working directory. In case you forget where you are. Not much to it: pwd will
output the directory name, such as /Users/home/chip/Pictures/Vacation/
grep a tool used for searching through files. Its quite deep and can be complicated, but if
you see the word grep in some command, you know its searching for a match.
| (pipe) a command used to redirect data into an application.
< (redirect) a command use to redirect data into a file.
cat concactenate. used to append data to a file. Ex: cat "Last line of text" >
sometext.txt. Merge files: cat append.txt > main.txt will put all the text in append.txt
into main.txt.
less makes it so you can paginate and read a text tile. Ex: less longtext.txt will fill the
screen with the first part of the longtext.txt file. Use the space bar to view the next page.
Type q to exit.
nano a text editor. Youll often see commands that call nano so you can edit a
find look for files in the filesystem. Ex: find ~/Documents -name particular.txt -
type f will look for the file with the name particular.txt in the Documents directory.
chmod change mode. Used for file permissions, which can be important when sharing
things on the network, scripting actions, and many more reasons.
htop display the processes currently alive on the CPU. If things seem slow, or you want to
see how much CPU or memory a program is using, just type htop to see a table of all
running processes, then typeq when you want to exit.
scp secure copy. copy a file from one computer to another over a network. Ex: scp
Pictures/Vacation/motel.jpg Pictures/Vacation/accident.jpg
network.
ssh secure shell. access another computer on the network and use the terminal commands
to make changes and control it. Ex: ssh [email protected] to access your CHIP on a local
network.
CTRL C if you cant use the terminal because a process is taking too long, type CTRL-C on
your keyboard to cancel the most recent command.
Connecting Accessories
CHIP has a lot of connectors, some for building, some for doing normal computer things. This
section covers the normal computer things, like audio, video, and input.
Recommended Accessories
CHIP is a minimal computer. Many CHIP users may never connect common peripherals, instead
using CHIP as a headless computer. Like desktop computers from Best Buy, you may find that
certain accessories will improve the overal usability of CHIP. We recommend:
Bluetooth Keyboard
USB mouse
Jumper wire
Youll find that a simple powered USB hub is pretty essential if you want to use a lot of USB
devices with CHIP. Not only is there only one USB port (keeping CHIP nice and small), but CHIPs
micro USB power port can only provide so much power for the USB port. If you dont have a
powered USB port, youll quickly max out power if you attach too many accessories.
Many keyboards have USB hubs built-in, so you can attach a mouse to the keyboard, attach the
keyboard to CHIP, and immediately have control. However, its likely the two will draw too much
current, so youll want to connect to a powered hub before you connect.
As you know, CHIP has built-in bluetooth. If you want to use a keyboard and mouse, you can keep
your USB port free for other things (like mass storage or a MIDI controller!) and keep your desk
clean. Seeconnecting to bluetooth section
Monitor
In the spirit of keeping things small, CHIP packs all the audio and video into a small TRRS (TipRing-Ring-Sleeve) connector. Built-in video output is restricted to standard composite video
resolution of 640x480. Higher video resolutions are possible using the VGA and HMDI DIP boards.
Heres what the other end of the cable looks like, attached to a monitor with stereo audio inputs
(red and white) and the composite video plug, moved so you can see the label on the monitor:
CHIP comes with a 1/8" (3.5mm) Tip-Ring-Ring-Sleeve (TRRS) jack, capable of carrying stereo
audio, and either composite video out, or microphone in.
This is a fairly common port, but there are a few different arrangements of the conductors, so not
all cables are equal. Fortunately, CHIP uses the same conductor arrangement as Pi, Zune, and
iPod audio/video cables, so the most common mini to RCA A/V cables should work just fine.
Some cables will route signals a bit differently, using the Red RCA cable for Video instead of
Yellow. If video out isnt working through the yellow cable, see if red works. If not, your cable may
be a version thats arranged in a way that it just wont work with CHIP:
yellow : video
If you want to learn even more about TRRS connectors and the general lack of standardization
with them, this page has even more details.
NTSC or PAL
The composite video format is NTSC by default. If you need to hook up to a monitor that only uses
a PAL signal, youll need to change that at u-boot time. First, connect to CHIP with a UART cable.
Then power up CHIP, and press a key on the keyboard to boot into u-boot mode to change the
environment variable manually.
printenv video-mode
where mode data can be, for NTSC and PAL respectively:
setenv video-mode sunxi:640x480-24@60,monitor=compositentsc,overscan_x=40,overscan_y=20
Headphones
The audio and video connector on CHIP can be dedicated to audio output suitable for headphones
or connecting to an amplifier for filling a room or public space with glorious sound. Just connect a
standard 3.5 mm (1/8") TRS audio plug into CHIPs a/v jack. Of course, if headphones are plugged
in, there will be no room for a composite video output jack. You can also get audio left, common,
and right output frompins 4, 6 & 8 on header U14.
If you want to use audio input, you might find it easiest to use the pins on pins 10 and 12 on
header U14. However, if you want to use the 1/8" TRRS connector, you can modify the CHIP
board to replace the composite video connection with an audio input connection.
If you look at the bottom of CHIP with the audio and USB jacks pointed up, youll see three small
contact pads to the left of the audio jack. The left pad has a small label of mic and the right pad
has a tv label. Between the middle pad and the tv pad is a trace that can be carefully cut with an
Exacto or utility razor blade. Once that is cut (check with a volt or continuity meter), you can put a
solder blob between the micand middle pad. Now the outer ring can be used for audio input.
As another reference, if you had X-ray vision and you were looking from the bottom of CHIP,
youd see a trace like this:
If the composite video connection is needed again, just reverse the process: desolder the
connection between mic and the middle pad, then solder a bridge between tv and the middle pad.
If you want to use the pins 10 and 12 on header U14, youll most likely need to add some
additional circuitry to get a good input signal. Here is a schematic of the simple circuit:
Youll need two 4.7 microfarad capacitors, one 100 nanofarad capacitor, and a 3300 picofarad
capacitor. Youll also need one 2 kilo-ohm and one 4.3 kilo-ohm resistors.
USB Storage
If you have files that you want to modify, use, or transfer to CHIPs internal storage, you can attach
a USB thumb drive, card-reader, or hard drive. Open the file manager and access the files.
USB Audio
CHIP can use Class-compliant USB audio devices. A popular, and inexpensive choice for audio
devices are USB dongles based on the C-Media chipset. These have been tested successfully
with CHIP and can often be purchased for less than $10. Some good resources for linux and audio
compatibility are on the linux audio and alsa project websites.
Many of the drivers have not been tested with CHIP - as CHIP matures, more information will be
available. For now, we recommened USB Class-compliant or plug-and-play audio devices.
Like any modern laptop, CHIP can run and charge any single-cell LiPo battery. Read more in
the powering CHIP section.
shortcuts, applications to run, and settings to set. CHIP is small, so we keep our operating system
simple. Almost everything can be accessed from the Computer Things menu: settings, launching
apps, and access to files. Theres also a few convenient functions in the top right system tray.
Most of the settings for the computer and for the desktop can be set using the apps in the
Computer Things menu. Select the appropriate app from either the Settings Menu or the Settings
Manager.
WiFi
Connecting to a WiFi network is easy using the WiFi icon the top right system tray. Just select a
network to initiate a connection. If you need a password, youll be prompted for it.
If you need more control and information over your network connection, use the Settings->Network
Connections panel to show your connections. Double click on a connection to bring up the
connection editor:
Bluetooth
Bluetooth device setup can be accessed using the Bluetooth icon in the top right system tray.
When you begin a connection, youll be guided through the necessary steps to connect to your
device. For example, when you pair with a keyboard, youll often be prompted for a code to enter
to ensure a unique connection. Once you have paired a device, future connections will usually be
automatic when the devices are in range and powered up.
You can manage, and also connect to, your devices using the the Bluetooth Devices panel,
accessed from the Bluetooth system tray:
Sound
By default sound output comes from the built-in connector, served by the sunxi codec driver. If
you want to change the volume, you can use the volume control in the top right system tray:
Here, you can select the Playback category to change the volume:
If you dont see that control, just click on the Select Controls button and enable all controls:
Display
Use the Settings->Display control panel to adjust the monitors resolution and rotation settings:
If you want to customize the desktop image, icons, colors, and fonts, there are two different panels.
The Appearance panel lets you select a theme to make instant changes for several properties.
The Desktop panel lets you customize images and colors, along with the behavior of menus.
If you want to change the theme or the icon sets, you can search for these using the Synaptic
Package Manager. Search for gtk2 themes or icon sets. There are also packages that can
make it easy to find and configure themes, such as gtk-theme-config. Similarly you can use the
command line to search packages with apt-cache search gtk2 theme.
Set the Time with the Orage Globaltime panel. This can be found in Accessories->Orage
Globaltime or in Office->Orage Globaltime. Simply click the time to bring up the preferences panel.
You can quickly view the date from the Orage Calendar in the Office menu.
Mouse Sensitivity
Mouse sensitivity is set for the default 640x480 resolution. If you are using CHIP with a higher
resolution monitor, you may want to adjust the sensitivity of the mouse. You can get to the Mouse
settings panel from Computer Things->Settings->Mouse and Touchpad
CHIPs operating system comes with a default language of English. You can change the language
and the location, but youll need to use the terminal to do so. Use the Computer Things! menu to
launch the Terminal Emulator. Then use the apt-get command to install the language packs and
run a simple program to configure your language and location:
sudo apt-get update && sudo apt-get install locales && sudo dpkg-reconfigure
locales && sudo locale-gen
Youll get a large menu to select locales. Use the arrow keys to scroll down and spacebar to mark
your location with an [*]. Its advised that you choose the location marked UTF8. Others are
somewhat arcane edge cases! Hit return to continue.
CHIP comes prepackaged with many open-source applications to get you started. Its easy to
launch an application. You can select an application from the Computer Things! menu and select
an app from the categories:
Or, for more control, launch the Application Finder in Accessories, where you can use the search
bar and easily navigate among the categories:
Below are some of the applications that come pre-installed with CHIP:
AbiWord
AbiWord is a fully featured word processor. You can learn more at The AbiWord website
Ice Weasel is a Debian Linux version of the Firefox browser. The browser is largely the same as
Firefox, just with a different name. More information is at the Debian website and in this stack
exchange thread.
Video Player
CHIP plays video! Use the built-in Mplayer to open and play videos.
Terminal (commandline)
The life blood of linux. If theres something you cant do on the desktop, or you want to automate
tasks, or access different hardware settings using nothing but a keyboard and text, youll open up
Terminal.
These are the applications installed by default on CHIP as accessed through the GUI.
Application Finder
Leafpad
Bulk Rename
Orage Globaltime
Screenshot
Task Manager
Viewnior
GNOME MPlayer
AbiWord
QjackCtl
Orange Calendar
Orage Globaltime
Htop
Package Updater
Launch the Synaptic Package Manager to find and install new software. Synaptic is a graphical
interface to the apt-get command and will install software intended for DERP and other debainbased systems. You can learn more about Synaptic here
Theres a simple search bar to make it easy to find packages you are interested in. If you dont find
the package you are looking for, hit the Reload button to refresh Synaptics record of available
packages.
Using Synaptic is very easy. For example, if you wanted to install the Scratch Programming
Environment, you can simply search for scratch and youll get a lot of results. Scroll through, and
youll eventually find scratch in the packages window. However, youll probably want to narrow
your results with better search terms, such as scratch programming environments
When search is complete, you can select scratch from the package panel.
Press the top Apply button, and youll get the following dialog:
Auto Update
CHIP will automatically look for any updates and alert you if updates are available for your existing
software and the operating system.
apt-get
If you are using the commandline, you will use apt-get to install and update new software.
If you are new to apt, some important commands to know:
sudo apt-get update updates the information from repositories, so any installs you make
sudo apt-get install (name of package) to install a package and any of its
dependencies.
sudo apt-get remove (name of package) will remove a package and any
dependencies not used by other packages
sudo apt-get purge (name of package) will remove a package and any dependencies
not used by other packages along with all settings data
apt-cache search (search terms) will search through the package repositories for
names and descriptions that include your search term.
Uninstall Software
You can use the Synaptic Package manager to uninstall any packages you no longer need. If you
know the name, you can use the Search function to find the package, then Mark it for Removal.
For example, if you want to remove AbiWord, first open Synaptic and search for abiword:
Once found, select AbiWord in the package list, and select Mark for Removal in the Package
menu:
If there are additional, related packages that need to be removed, youll be notified:
Finally, you can confirm that AbiWord has been removed by checking the Applications menu:
If you want want CHIP to boot directly into a console, and not load the Desktop or Window
manager GUIs, there are a couple options. For the temporary case, you can open a terminal
window and use the command
Next time you boot CHIP, it will not load the desktop or window environment, leaving you with
command-line operation only. If you wanted to return to booting into the GUI, you can use this
command before you reboot:
The other option is to run a linux distribution with no GUI installed. You may want to do this if you
want to use commandline only and want to save some storage space. You can follow instructions
to flash CHIPwith buildroot, or Debian (with no GUI).
CHIP Hardware
CHIP is small, but it packs a lot of hardware on the PCB. Heres an overview of the connections
and components.
Wireless
WiFi
Bluetooth
CHIP supports the Bluetooth 4.0 LE standard using the built-in Bluetooth.
Physical Connectors
CHIP is loaded with essential connectors for USB, serial, audio, video, and loads of IO on the pin
headers. Oh, and a button too!
Button
There is a tiny tiny button on CHIP next to pin header U13 that is used for turning CHIP on or off. If
CHIP is off and connected to a power source, hold down the button for one second to power it up.
To turn CHIP off (rather brutally), hold the button for 10 seconds. We recommend using the
operating system to power CHIP off, but if you need to, you can use this button.
USB
The single USB port on CHIP is USB 2.0 compatible. It can provide up to 500mA of current, as is
standard for USB ports on computers. If you need to provide more current, we recommend a
powered USB hub.
USB On The Go
The micro USB port is generally used to provide power for CHIP. However, since CHIP can be
powered through the pin headers or a battery, this port can be used for different things. By default,
connecting CHIPs micro USB to a computer will create a USB Serial connection, so you can
access CHIP with a screen or cu session in a terminal. With Linux kernel modifications, it is
possible to enable other modes, such as an Ethernet bridge.
The 1/8" TRRS connector provides composite video and stereo audio output. Headphones can be
plugged in for audio only.
Audio Input uses the same connection on the TRRS connector as the composite video signal. If
you want to make audio input active on the TRRS connector, you need to cut a circuit board trace.
This is not as permanent as it sounds, as it is easy to re-enable composite video out with a small
amount of soldering.
Pin Headers
The Pin Headers provide a massive amount of connectivity, making CHIP a suitable platform for
product development for physical computing and internet of things devices. Heres a basic
diagram that labels all the pins:
U13L
U13R
U14L
U14R
GND : ground
CHG-IN : 5V input
GND : ground
VCC-5V : 5V power
UART1-TX : UART
VCC-5V : 5V
power
GND : ground
serial transmit
U13L
U13R
U14L
U14R
VCC-3V3 : 3V
TS : analog
UART1-RX : UART
power
VCC-1V8 : 1.8 V
power
temperature sensor
input
serial receive
connect to ground
common ground
PWRON : power on
VCC-3V3 : 3 volt
TWI1-SCK : two-
GND : ground
LRADC : low-res
MICIN1 : audio in
X2 : Resistive
(touchscreen)
(touchscreen)
Y1 : Resistive
touchpanel input
LCD-D2 :
RGB666 data
Analog-Digital
Converter
X1 : Resistive
touchpanel input
power
touchpanel input
Y2 : Resistive
touchpanel input
(touchscreen)
XIO-P0 : expander
XIO-P2 : expander
XIO-P4 : expander
XIO-P6 : expander
GPIO
GPIO pin 2
GPIO pi
pin 1
pin 3
pin 5
backlight dimming)
LCD-D4 :
RGB666 data
LCD-D3 : RGB666
data
GPIO pin 6
pin 7
U13L
U13R
U14L
U14R
LCD-D6 :
LCD-D5 : RGB666
GND : ground
GND : ground
LCD-D10 :
LCD-D7 : RGB666
AP-EINT1 :
AP-EINT3 : Application
Processor Interrupt
RGB666 data
RGB666 data
data
data
Application
interactions (keyboard
expander, etc.)
LCD-D12 :
RGB666 data
LCD-D14 :
RGB666 data
LCD-D11 : RGB666
data
LCD-D13 : RGB666
data
CSIPCK : CMOS
serial interface
TWI2-SCK(*) : two-wire
serial bus 2 (I2C)
LCD-D18 :
RGB666 data
LCD-D15 : RGB666
data
CSIHSYNC :
CMOS serial
interface
LCD-D20 :
LCD-D19 : RGB666
CSID0 : CMOS
LCD-D22 :
LCD-D21 : RGB666
CSID2 : CMOS
LCD-CLK :
LCD-D23 : RGB666
CSID4 : CMOS
RGB666 data
RGB666 data
RGB666 clock
data
data
data
serial interface
serial interface
serial interface
interface
interface
interface
U13L
U13R
U14L
U14R
LCD-VSYNC :
LCD-HSYNC :
CSID6 : CMOS
LCD screen
LCD
GND : ground
GND : ground
GND : ground
LCD-DE : RGB666
data
serial interface
interface
(*)The XIO GPIO pins are provided by an I2C Expander at address 0x38 on the TWI bus 2, as
such, this address is not available on bus 2.
Mechanical Drawing
CHIP is open source hardware. Heres where you can get all the data you need to make, modify,
or learn about your own CHIP. Visit the CHIP Hardware git repository.
Making Stuff
CHIP is more than a cool, small, inexpensive computer. Its a complete system for building projects
that require remote control, network connectivity, and physical interfacing with people and the
environment. CHIPs pin headers have all the connections to make this happen. An annotated
diagram of the pin headers can be found in the hardware section of this manual.
GPIO
GPIO provides basic digital connections to the physical world to create physical products with
CHIP. These pins can act as reads or 'writes, for example, to sense switch positions or turn an
LED on or off.
CHIPs most easily available IO pins are the XIO pins on header U14. This is the GPIO
eXpander that uses an I2C bus to create eight (8) convenient pins for GPIO. These use
address 0x38 on the TWI bus 2. Other pins are available for GPIO if more than eight are needed.
CHIP has several General Purpose Input/Output (GPIO) pins available for you to build around. If
you want to access them in a very primitive way, just to confirm their existence, heres some things
to try.
Requirements
CHIP
LED
Jumper Wire
SSH or serial connection to CHIP or
Monitor and keyboard
There are eight (8) GPIO pins always available for connecting CHIP to the sense-able world. If you
orient CHIP with the USB connector pointed up, youll find the GPIO pins in the middle of the right
header, U14, Pins 13-20, labeled XIO-P0 to P7:
For various reasons related to the community nature of Linux development, the GPIO expander pin
numbers are different between CHIP OS kernels 4.3 and 4.4. What follows is a very technical
discussion of the GPIO access. If you just want to start making stuff and dont need low-level
information, you might just want to skip this section and go straight to the python library.
If you are developing applications on CHIP that use GPIO pins and you would like consistent
behavior between the two kernel versions, you need to know how to find out the base value for the
GPIO values. It may be enough for you to know that the GPIO expander pins start at 408 on 4.3
and 1016 on 4.4, however, it would be ideal to calculate this in your application to truly future-proof
for future kernels.
If you look in the directory /sys/class/gpio, youll find two directories starting
with gpio: gpiochip0 and either gpiochip408 (4.3) or gpiochip1016 (4.4).
The 408 and 1016 are the bases for the expander pins. If you want to definitively find out what the
base is using code, you should
cat gpiochip*/label
cat gpiochip*/ngpio
cat gpiochip*/base
The label you are interested in is the value pcf8574a which is the device that provides GPIO
expansion. This provides the number of GPIO as returned by ngpio. The first expander pin starts
with the basevalue. If you parse all these values and apply to your code, you can setup your
application to be kernel-agnostic for GPIO access.
BASE=`cat $BASE_FILE`
There is a sysfs interface available for the GPIO. This just means you can access the GPIO
states in a file-system-like manner. For example, you can reference XIO-P0 using this path:
/sys/class/gpio/gpio408/
The number is somewhat unfortunate, since the sysfs names do not match the labels on our
diagram! But is not too hard to translate. Pins XIO-P0 to P7 linearly map to gpio408 to gpio415 on
kernel 4.3 andgpio1016 to gpio1023 on kernel 4.4. See above to learn more about that
distinction.
These lines of code will let us read values on pin XIO-P7. First, we tell the system we want to listen
to this pin:
#4.3
cat /sys/class/gpio/gpio415/direction
#4.4
cat /sys/class/gpio/gpio1023/direction
Connect a jumper wire between Pin 20 (XIO-P7) and Pin 39 (GND). Now use this line of code to
read the value:
#4.3
cat /sys/class/gpio/gpio415/value
#4.4
cat /sys/class/gpio/gpio1023/value
Now that its in output mode, you can write a value to the pin:
#4.3
If you attach an LED to the pin and ground, the LED will illuminate according to your control
messages.
Enough IO
When you are done experimenting, you can tell the system to stop listening to the gpio pin:
#4.3
Learn More
Python Library
There is a well-maintained python library that works for 4.3 and 4.4 kernels available here. This is
analogous to the RPi.GPIO library, but is designed for CHIP. Its an excellent place for quickly
working with GPIO and PWM on CHIP.
GPIO Types
There are many types of sensors that can be used with GPIO:
Switches
Switches provide on/off state input from the physical world to your computer. You can use the
commandline interface to listen to switch values. A python library was created for
the ChippyRuxpin project if you need a higher-level example in python.
LEDs
LEDs can be illuminated and turned off using the commandline interface. Refer to
the ChippyRuxpin project on a good example on how to manipulate the commandline using
python.
Relays
Relays are special hardware bridges used to switch higher voltage electronics, protecting CHIP
from the high voltages that would destroy it. Using a relay board is programmatically no different
from using switches.
Expanding GPIO
If you dont need to drive an LCD, you can use those pins for more, faster GPIO if you want to.
These are the pins numbered 18-40 on U13 and 27-40 on U14 to act as GPIO to increase the
number of available GPIO pins. Documentation on this process is forthcoming!
Pin 9 on header U14 provides a link for low resolution analog to digital conversion (ADC). There is
no driver for this link yet. ADC is used to read continuous sensors (temperature, pots, FSR,
photoresistor, etc)
1 Wire
The 1 Wire serial protocol is not available in CHIP OS 4.3. In version 4.4 and above, you can
access one wire data from the sysfs device. Find your one wire devices with
ls /sys/bus/w1/devices/2*/eeprom
The * is there because your eeprom device will register a unique UUID number with C.H.I.P., so
the ls command will show you all available one wire devices.
UART
UART connections can be made using the UART connections on header U14.
PWM
Pulse Width Modulation is used to control motors and other devices. It is possible to use GPIO
pins to drive motors, but they generally are not fast enough for robust and smooth control. PWM
can be accessed through an sysfs protocol.
I2C
I2C can be accessed through a sysfs protocol using the debian i2c-tools. In the terminal, use
sudo apt-get install i2c-tools
Note that the XIO GPIO pins are provided by an I2C expander at address 0x38 on the TWI bus 2,
so that address cannot be used on bus 2.
Using the numerous LCD header pins, a color touchscreen panel can be directly implemented on
CHIP.
Project Examples
Projects coming soon!
C.H.I.P.
Instructions
If you dont have the Google Chrome or the open-source Chromium browser on your other
computer, install it by following the preceding links.
Ok, good. Now that you have installed the browser, you can visit flash.getchip.com in Chrome or
Chromium and follow all the instructions. If you are using a computer with USB3 ports, its
suggested that you attach a USB2-compliant hub and connect your CHIP to the hub, instead of
directly to the USB3 port.
Its possible to run the entire operation online. There are also options for downloading the OS
image to your computers harddrive, then flashing your CHIP with no additional need for internet
access.
You may not want to use the browser-based flashing procedure. If this is the case, or you need
additional tools, you can flash using the CHIP SDK
Before you try anything else, try using a different USB cable. Many cables are charging-only, or do
not support high bandwidth and will cause flashing to fail.
Windows-specific
Unfortunately, due to the nature of how Windows manages drivers, the flashing procedure will
likely fail the first time you use it. When that happens, try completely closing and reopening your
browser. Depending on your version of windows, this might happen twice, once when waiting for
FEL, and then again waiting for Fastboot.
Troubleshooting
If you get stuck Waiting for Fastboot and the above options dont work, you should be able
to install a headless no fastboot image. However, it will take quite a bit longer, and the
Operating System wont have a GUI.
MacOS specific
There are some times where using USB3 ports will cause the flashing to fail. If you can, try
using a USB2 port, not a USB3. Recent Macs have only USB3 ports. If you find yourself
with a modern Mac, try using a USB2 hub in your USB3 port and plug C.H.I.P. into that.
If you get stuck Waiting for Fastboot and the above options dont work, you should be able
to install a headless no fastboot image. However, it will take quite a bit longer, and the
Operating System wont have a GUI.
Linux-specific
Linux requires permissions to write to C.H.I.P. when its plugged into your computer. Chrome (or
Chromium) does not have these permissions, so you need to explicitly create them before youll be
able to use the web flasher .
On Ubuntu:
You need to paste the following into a terminal:
sudo usermod -a -G dialout $(logname)
sudo usermod -a -G plugdev $(logname)
# Create udev rules
The udev rules then map the usb device to the groups.
For more information, check the systems group page on debian.org.
USB3 Issues * If you have any issues, try using a USB2 port and not a USB3 one, or try using a
USB2 hub in your USB3 port and plug C.H.I.P. into that. * If you get stuck Waiting for Fastboot
and the above options do not work, you should be able to install a headless no fastboot image.
However, it will take quite a bit longer, and the Operating System wont have a GUI.
Caveat In rare cases, you may have an issue with your computer putting C.H.I.P. into autosuspend mode. Here is an example on how to fix this problem:
apt-get install laptop-mode-tools
AUTOSUSPEND_RUNTIME_DEVID_BLACKLIST="1f3a:efe8"
reboot
Advanced
For those interested in building with a stripped-down version of an operating system, or looking to
customize CHIP from the command line, we have several tutorials that describe how to setup
CHIP with more depth.
CHIP-SDK has everything needed to develop software for C.H.I.P. Most importantly, if you want to
load an operating system onto CHIP, the only supported way is to do this from a virtual machine.
Given that the virtual machine runs Ubuntu, its pretty safe to say that Ubuntu users can flash
without the virtual machine.
Requirements
Software Setup
There are several required software pieces to get the CHIP SDK virtual machine running.
Install VirtualBox and Extensions
If you are using Windows, you need to add the VirtualBox installation directory to your
Install Vagrant
Install Vagrant from the Vagrant site. Alternatively, if OS X, you can use the homebrew package
manager: brew install caskroom/cask/brew-cask brew cask install vagrant
Install Git
Installation of Git depends on your operating system:
vagrant ssh
Troubleshooting
folder can no longer be mounted, update the guest additions by typing the following in the CHIPSDK directory on the host:
This blog post has some more tips on keeping additions in sync.
Invalid State
If you get an error like:
error: The guest machine entered an invalid state while waiting for it to boot.
This probably means your version of VirtualBox needs updating and/or needs the Extension Pack.
Update as necessary and try vagrant up again.
Couldnt Find File
If you get the error:
error: Couldn't open file /Volumes/Satellite/gitbins/CHIP-SDK/base
that means you didnt cd CHIP-SDK. Very basic, perhaps, but late nights sometimes need that
bump!
You may have been working with CHIP for a while now, and you want to updated your SDK. Its
only slightly more involved than sync'ing with the git repo; you have to update the virtual machine,
too.
Requirements
How To Update
Just follow these steps:
On your host operating system, pull the latest changes from our Git repository:
cd ~/CHIP-SDK
git pull
Make sure the virtual machine is shut down and update it:
vagrant halt
vagrant provision
Now you can boot the virtual machine and ssh into it:
vagrant up
vagrant ssh
Once you see the trusty prompt, your CHIP SDK virtual machine is ready to use:
vagrant@vagrant-ubuntu-trusty-32:~$
All The Commands At Once
Heres all the commands in one place:
cd ~/CHIP-SDK
git pull
vagrant halt
vagrant provision
vagrant up
vagrant ssh
Now that the virtual machine and SDK are running and configured, you can connect CHIP to your
computer and give it an operating system. If you want to flash using a native Ubuntu installation,
read how toprepare Ubuntu to flash
Have you repaired your CHIP?
The original batch of CHIPs shipped with a software bug in the NAND flash storage. Weve built a
repair tool.
Note: this jumper needs to be present only when you connect CHIP to power. If for some reason
the wire becomes disconnected after you have powered CHIP, there is no problem or need to
panic.
Now connect CHIP to your computer with a micro-USB->USB-A cable. The power LED will
illuminate.
You can add additional software before you flash CHIP by customizing buildroot. To flash CHIP
with the buildroot OS:
cd ~/CHIP-tools
./chip-update-firmware.sh -f
The -f option means fastboot. If you have problems flashing, particularly on Windows or OS X,
you can run ./chip-update-firmware.sh to disable fastboot flashing.
During flashing, the terminal will fill with messages. If successful, youll see C.H.I.P. run through a
hardware test, with the answers being OK. If C.H.I.P. is 'OK, you can remove the jumper wire.
Here is asample successful output.
Option 2: Flash With Debian
If you want to flash CHIP with the debian OS with no window manager or GUI
cd ~/CHIP-tools
./chip-update-firmware.sh -d -f
The -f option means fastboot. If you have problems flashing, particularly on Windows or OS X,
you can disable fastboot by leaving off the -f option: ./chip-update-firmware.sh -d. Here is
a sample successful output.
./chip-update-firmware.sh -d -b stable-gui -f
During flashing, the terminal will fill with messages. If successful, youll see C.H.I.P. run through a
hardware test, with the answers being 'OK. If C.H.I.P. is 'OK, you can remove the jumper wire.
Here is asample successful output. Because of filesize, the gui option must also include the f fastboot option. Windows and OS X are not yet supported as flashing hosts.
Connect to CHIP and Do Something
If everything went OK, you can now power up your CHIP again and connect via serial as a USB
gadget:
You can login to CHIP as chip or root using the password chip.
and even test the hardware:
hwtest
Customize Buildroot
If you want to customize buildroot, use these commands before you run the ./chip-updatefirmware.sh script to flash CHIP with firmware:
cd ~/CHIP-buildroot
make chip_defconfig
make nconfig
The nconfig command will display a text interface in your terminal. Use your arrow keys to
browse and select additional software for the buildroot OS. When youre finished with your
selections, exit by hitting the F9 key, which will automatically save your custom buildroot to:
/home/vagrant/CHIP-buildroot/.config
Now lets build your buildroot with your custom additions: shell make This will take a while,
maybe an hour. When finished, flash CHIP with the script:
cd ~/CHIP-tools
BUILDROOT_OUTPUT_DIR=../CHIP-buildroot/output ./chip-fel-flash.sh
Unless you changed the users or passwords, you can login to CHIP as chip or root using the
password chip.
Appendix
Sample outputs are provided in this appendix so you can more easily troubleshoot or proceed with
confidence when flashing CHIP with firmware.
Buildroot Output
Sample output from flashing Buildroot to CHIP looks like:
ROOTFS_URL=http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stabl
e/71/images
BUILD=71
BR_URL=http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71
/images
BR_BUILD=71
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/rootfs.ubi
MD5: 90315ca1fb8ff95fc6878ce8126bdf02
S3_MD5: 6d59af4a0f673e1d61147e4a06dd7ba8
md5sum differs
--2015-10-21 15:59:16--
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/rootfs.ubi
Resolving opensource.nextthing.co.s3.amazonaws.com
(opensource.nextthing.co.s3.amazonaws.com)... 54.231.176.13
Connecting to opensource.nextthing.co.s3.amazonaws.com
(opensource.nextthing.co.s3.amazonaws.com)|54.231.176.13|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 54525952 (52M) [binary/octet-stream]
1.83MB/s
in 29s
/home/doge/gits/CHIP-tools/.firmware/images/sun5i-r8-chip.dtb exists...
comparing to
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/sun5i-r8-chip.dtb
MD5: de0beb674eeb382901251febfbf1cf9b
S3_MD5: de0beb674eeb382901251febfbf1cf9b
file already downloaded
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/sunxi-spl.bin
MD5: dd3f9c9c0984a6c1d7cdca2921f6f448
S3_MD5: dd3f9c9c0984a6c1d7cdca2921f6f448
file already downloaded
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/uboot-env.bin
MD5: 6f2b79a781f9f490911012ec3aa653e9
S3_MD5: 6f2b79a781f9f490911012ec3aa653e9
file already downloaded
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/zImage
MD5: 0d35ad764564a2cee9281715823597a2
S3_MD5: 0d35ad764564a2cee9281715823597a2
file already downloaded
http://opensource.nextthing.co.s3.amazonaws.com/chip/buildroot/stable/71/images
/u-boot-dtb.bin
MD5: 97340d221bcbcc8f0bf27e26adc26f0a
S3_MD5: 97340d221bcbcc8f0bf27e26adc26f0a
file already downloaded
BUILDROOT_OUTPUT_DIR = /home/doge/gits/CHIP-tools/.firmware
== preparing images ==
PADDED_SPL_SIZE=0x000000c6
35+1 records in
flash CHIP
Image Type:
Created:
Data Size:
00000000
== upload u-boot ==
100% [============================================================]
== execute the main u-boot binary ==
== write ubi ==
flashing................OK
login... OK
password... OK
poweroff... OK
Debian Output
Sample output from a successful Debian output:
debian selected
ROOTFS_URL=http://opensource.nextthing.co.s3.amazonaws.com/chip/debian/stable/3
7
BUILD=37
BR_URL=http://opensource.nextthing.co/chip/buildroot/stable/71/images
BR_BUILD=71
http://opensource.nextthing.co.s3.amazonaws.com/chip/debian/stable/37/rootfs.ub
i
MD5: 6d59af4a0f673e1d61147e4a06dd7ba8
S3_MD5: 90315ca1fb8ff95fc6878ce8126bdf02
md5sum differs
--2015-10-21 16:06:36--
http://opensource.nextthing.co.s3.amazonaws.com/chip/debian/stable/37/rootfs.ub
i
Resolving opensource.nextthing.co.s3.amazonaws.com
(opensource.nextthing.co.s3.amazonaws.com)... 54.231.160.10
Connecting to opensource.nextthing.co.s3.amazonaws.com
(opensource.nextthing.co.s3.amazonaws.com)|54.231.160.10|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 245366784 (234M) [binary/octet-stream]
in 2m 11s
http://opensource.nextthing.co/chip/buildroot/stable/71/images/sun5i-r8chip.dtb
MD5: de0beb674eeb382901251febfbf1cf9b
S3_MD5: de0beb674eeb382901251febfbf1cf9b
file already downloaded
to http://opensource.nextthing.co/chip/buildroot/stable/71/images/sunxi-spl.bin
MD5: dd3f9c9c0984a6c1d7cdca2921f6f448
S3_MD5: dd3f9c9c0984a6c1d7cdca2921f6f448
file already downloaded
to http://opensource.nextthing.co/chip/buildroot/stable/71/images/uboot-env.bin
MD5: 6f2b79a781f9f490911012ec3aa653e9
S3_MD5: 6f2b79a781f9f490911012ec3aa653e9
file already downloaded
S3_MD5: 0d35ad764564a2cee9281715823597a2
file already downloaded
MD5: 97340d221bcbcc8f0bf27e26adc26f0a
S3_MD5: 97340d221bcbcc8f0bf27e26adc26f0a
file already downloaded
BUILDROOT_OUTPUT_DIR = /home/doge/gits/CHIP-tools/.firmware
== preparing images ==
PADDED_SPL_SIZE=0x000000c6
35+1 records in
flash CHIP
Image Type:
Created:
Data Size:
00000000
== upload u-boot ==
100% [============================================================]
== execute the main u-boot binary ==
== write ubi ==
flashing...........................OK
login... OK
password... OK
poweroff... OK
Failure
There are a couple common errors that occur when flashing.
The first is a that CHIP is not in fel mode, ready to receive firmware. There are three possible
reasons for this:
You already successfully flashed CHIP, and havent disconnected the USB cable from your
The jumper wire between Pins 7 & 39 is either not present, loose, or the jumper is in the
computer.
wrong holes.
Youll know this is the problem when you see this error in the terminal window:
== upload the SPL to SRAM and execute it ==
ERROR: Allwinner USB FEL device not found!
== upload images ==
The other common error is that you need to run the chip-update-firmware.sh script with sudo (or
you need to add a rules file as described in the next section). This error looks like this in your
terminal window:
ERROR: You don't have permission to access Allwinner USB FEL device
== upload images ==
ERROR: You don't have permission to access Allwinner USB FEL device
ERROR: You don't have permission to access Allwinner USB FEL device
ERROR: You don't have permission to access Allwinner USB FEL device
ERROR: You don't have permission to access Allwinner USB FEL device
== execute the main u-boot binary ==
ERROR: You don't have permission to access Allwinner USB FEL device
Option: Flash Without sudo
As a developer, theres a good chance youll flash CHIP more than once in your life. Youll
probably want to follow these steps. In order to be able to run the chip-update-firmware.sh script
without sudo, make a rules file:
then, to make this rules file work: shell sudo udevadm control --reload-rules
If you are running Ubuntu OS on your computer, and dont want to bother with a virtual machine,
you can flash CHIP from your real computer. A generous member of our forums created a script
that duplicates the below steps in a convenient package. You can get it from github. Please note
that this is not supported or maintained by Next Thing - we only link to it here for your potential
convenience.
Requirements
CHIP
Jumper wire
Install Dependencies
Install some tools:
If you get an error that the repository android-tools-fastboot cant be found, you are probably
booting from an Ubuntu Live CD (or USB stick). Youll need to add a repository so you can install
the android-tools-fastboot:
If you intend to customize buildroot with additional software, install these packages:
sudo apt-get install libncurses5-dev libc6-i386 lib32stdc++6 lib32z1
sudo rm -f /usr/local/bin/fel
If you have already cloned the CHIP-tools from a previous CHIP flashing, you can, of course, just
update your existing repository
cd CHIP-tools
Youll also need to add your user to some groups and add a udev rule shell sudo usermod -a
-G dialout $(logname) && sudo usermod -a -G plugdev $(logname) &&
sudo rm -f /usr/local/bin/fel
cd ..
WiFi Connection
Below are detailed instructions for connecting to Wi-Fi networks using two different command line
protocols: nmcli and connman. If you are using the CHIP OS that comes installed on CHIP, or you
have flashed with our Debian distribution, youll want to use the first section about connecting
with nmcli. If you have flashed CHIP with our buildroot OS, youll need to use connman.
There are several tools in Linux for connecting and configuring networks. We will be using the
command nmcli (Network Manager Client). You may see other tutorials that reference iw or
iwconfig, however, these tools are not recommended for C.H.I.P. You can read more about nmcli
on the internet.
Requirements
You will need one of these scenarios:
SSID
MODE
CHAN
RATE
SIGNAL
BARS
SECURITY
11
54 Mbit/s
100
--
Infra
54 Mbit/s
30
___
WPA1 WPA2
Infra
10
54 Mbit/s
44
__
WPA1 WPA2
NextThing HQ
Infra
NextThing Shop
2WIRE533
sudo nmcli device wifi connect '(your wifi network name/SSID)' password '(your
wifi password)' ifname wlan0
sudo nmcli con add con-name 'mywifi' ifname wlan0 type wifi ssid '(your wifi
network name/SSID)'
which outputs a list of the various network devices and their connections. For example, a
successful connection would look like this:
DEVICE
TYPE
STATE
CONNECTION
wlan1
wifi
disconnected
--
wlan0
ip6tnl0
lo
sit0
wifi
ip6tnl
loopback
sit
connected
unmanaged
unmanaged
unmanaged
NextThing HQ
----
Because it is worth knowing that Linux offers many ways of doing things, another command that
shows your current active connection is
nmcli connection show --active
which outputs like so:
NAME
NTC
UUID
59962bac-3441-437b-94ea-bf31dee66e8f
TYPE
802-11-wireless
DEVICE
wlan0
After you have connected once, your C.H.I.P. will automatically connect to this network next time
you reboot (or start NetworkManager services).
Test
Finally, you can test your connection to the internet with ping. Googles DNS server at the IP
address 8.8.8.8 is probably the most reliable computer on the internet, so:
ping -c 4 8.8.8.8
results in output like:
You can stop this command by pressing CTRL-C on your keyboard. The -c 4 option means it will
happen only 4 times.
You may want to prevent auto-connection to a network, so you can use this command to forget a
network:
Troubleshooting
Here are a few possible problems with connections.
No network found
Not much to say about that. If theres no network, you cant connect. Go find a network!
Incorrect password
If you type in the wrong password, youll get some errors like this:
[32258.690000] RTL871X: rtw_set_802_11_connect(wlan0) fw_state=0x00000008
[32258.800000] RTL871X: start auth
can connect to a wireless network, but have no access to the internet, so youd see a connection
when you request device status, but have a failed ping. This indicates a problem or restriction with
the router or the access point, not a problem with the CHIP.
A failed ping looks something like:
From 192.168.2.56 icmp_seq=14 Destination Host Unreachable
From 192.168.2.56 icmp_seq=15 Destination Host Unreachable
From 192.168.2.56 icmp_seq=16 Destination Host Unreachable
The Network Manager will periodically try to reconnect. If the access point is restored, youll get
something like this in your terminal window:
If you try to use nmcli and you get an error that it is not found or is not a command, chances are
that you are using the CHIP buildroot image. The nmcli commands only apply to CHIPs running
CHIP OS or Debian linux.
The buildroot operating system uses the connman command-line network manager to connect and
manage your network connections. If you are using CHIP OS (or Debian), you will find
that connman is not installed - youll need to use nmcli.
If you want all the details of connman visit the ArchLinux wiki.
Requirements
NTC
wifi_7cc70905cd77_4e5443_managed_psk
NTC Guest
wifi_7cc70905cd77_4e5443204775657374_managed_psk
ATT312
wifi_7cc70905cd77_hidden_managed_psk
wifi_7cc70905cd77_hidden_managed_none
wifi_7cc70905cd77_415454333132_managed_psk
HP-Print-99-LaserJet 1102
wifi_7cc70905cd77_48502d5072696e742d39392d4c617365724a65742031313032_managed_no
ne
ATT344
CBCI-1B57-2.4
wifi_7cc70905cd77_415454333434_managed_psk
wifi_7cc70905cd77_434243492d314235372d322e34_managed_psk
mi-fi
0024A5D8CF33
wifi_7cc70905cd77_6d692d6669_managed_none
wifi_7cc70905cd77_303032344135443843463333_managed_psk
Twirl-Eco-Events-2.4
wifi_7cc70905cd77_547769726c2d45636f2d4576656e74732d322e34_managed_psk
xfinitywifi
wifi_7cc70905cd77_7866696e69747977696669_managed_none
If your network is not password protected, youll get some output that will indicate a successful
connection, such as:
[
[
[
[
[
[
[
fw_state=0x00000008
kid:0, type:AES
[
type:AES
and now use the connect command (your network name will be different than whats below of
course)
connect wifi_7cc70905cd77_4e5443_managed_psk
Now that you are connected to a wireless network, you can exit connmanctl interactive mode by
typing
quit
All The Commands In One Place
Heres all the commands in one place:
connmanctl
agent on
connect wifi_7cc70905cd77_4e5443_managed_psk
quit
If your connection is not successful, then ping will tell you your network is down:
PING 8.8.8.8 (8.8.8.8): 56 data bytes
ping: sendto: Network is unreachable
Troubleshooting Connection Problems
Youll need to make sure you used the right network when you used the connect
commnand.
Review any messages that the connect commnand gave you. Did they look like the
If everything checked out until you got to ping, theres a good chance the problem is with
wifi_7cc70905cd77_4e5443_managed_psk
Disconnected wifi_7cc70905cd77_4e5443_managed_psk
Generally, conman will remember and cache setup information - if you reboot in the vicinity of a
known network, it will attempt to connect. However, if you need to forget a network setup, these
setups can be found by navigating:
cd /var/lib/connman/
You can delete a single connection by seeing what connections are stored
ls /var/lib/connman/
(the -r is needed because these are directories you are deleting, and the star at the end
of wifi* assumes your configurations all start with the string wifi)
For Advanced Users
Its worth noting that youll see two wireless networking interfaces if you list them with
ifconfig
connman is configured to see only the physical interface wlan0 which simplifies setup. We do this
with a blacklist, which can be modified at /etc/connman/main.conf
Getting simple audio playback working on CHIP is pretty easy, once you install the correct
packages and enable audio output. In the code examples below, weve inserted the && characters
at the end of lines so you can copy and paste the entire block into a terminal window and execute
each line in series. If you are using CHIP OS, sound output is already configured and working.
However, you may be running a simple version of Debian or buildroot, so these instructions will
help you get sound working on CHIP.
Requirements
CHIP
Setup CHIP
This will install alsa and some utilities for playing sound from the command line. Once those have
installed, youll need to make the outputs active for sound
alsamixer
will open up a simple interface. Use the left and right arrow keys on your keyboard to select among
the items, and use the up/down keys to change the options:
Play a Sound
https://upload.wikimedia.org/wikipedia/commons/d/db/Descending_thirds.wav
If wget returns command not found you can install it:
sudo apt-get install wget
We can finally play the sound and hear it over CHIPs headphone jack:
aplay test.wav
If you want to play mp3 or ogg files, you can install mplayer:
sudo apt-get install mplayer
wget -O test.ogg
https://upload.wikimedia.org/wikipedia/commons/e/e7/Agogo.ogg &&
mplayer test.ogg
lq.mp3 &&
mplayer test.mp3
Record A Sound
If you want to try the audio input, you need to connect audio input to header U14, pins 06 &
12 or modify CHIP to use audio in on the TRRS connector. Once you have an audio signal going
into CHIP, you can test it out by recording a three second (-d 3) WAV file with arecord:
arecord -f cd -d 3 -D hw:0,0 chipaudioin.wav
More Packages
Developers that want to use sound will probably want to download these packages:
sudo apt-get install portaudio19-dev &&
sudo apt-get install swig &&
In this tutorial, well describe how you can use the USB port to add more storage with a thumb
drive, hard drive, card reader, or whatever else. You can then copy, store, and edit files on the
storage device, extending the capability of CHIP.
This tutorial is suitable for the buildroot image. If you are following this for other Linux distributions,
there are some adjustments that youll need to make for paths, permissions, and enabling 'sudo.
With buildroot, you work as the root user, so this tutorial is appropriately terse.
Requirements
Computer running OS X 10.10+, Ubuntu 14.04+, or Windows 7+ (to format USB device, if
needed)
First, youll want to format the drive as an MS-DOS (FAT), NTFS, or ext3 volume. You can do this
on another computer.
Once formatted, insert the drive into CHIPs USB port. Enter the command
dmesg
[ 4954.590000] scsi 0:0:0:0: Direct-Access USB Flash Memory 1.00 PQ: 0 ANSI: 2
Notice the second to last line. This tells you the device location for the drive. Storage devices
generally have device names that start with sd. If you want to see all the storage devices
attached to CHIP, you can use a wildcard to display all devices that start with sd:
ls /dev/sd*
With one thumb drive attached, it appears as two devices: the device itself (sda), and the storage
partitions (sda1). There is only one partition on this drive.
Another way to find storage devices is the command
blkid
which lists them, along with the names you might have initialized them with:
/dev/sda1: LABEL="TEST" UUID="6668-11E9"
Now that you know where your partition is, its time to mount the partition so you can access the
files.
Now you can navigate to the drives directory and see all the files in the drive:
cd /drives
ls
If you want to remove the drive from the USB port on CHIP, its best to unmount it:
sudo umount /dev/sda1
Youll probably want to mount this drive automatically next time you use it, though. We can set that
up with a quick modification to the fstab (file system table) document:
vi /etc/fstab
Getting around vi is not very intuitive. If you are new to it, heres a quick guide on getting this text
into the fstab document:
type : (colon),
If theres an error, double check the fstab file and make sure it has the line /dev/sda1 /drives
vfat defaults 0 0 at the end. If its successful, youll be able to view, modify and copy the files
on the disk:
ls /drives
Now, if you reboot , the drive will mount automatically. If you remove the drive, then insert it again,
youll need the command
mount -a
CHIP has built-in Bluetooth and uses the bluez 5 stack for implementing connections and devices.
This tutorial instructs how to use a Bluetooth keyboard, since it is a simple and obvious example.
There are, of course, several types of Bluetooth devices, such as earpieces, audio connectors,
vacuum cleaners, and more. Future tutorials (search our bbs will cover those devices, but the
keyboard is a good introduction to the commands and an easy way to test your system.
Requirements
CHIP
Important!
Start with a CHIP completely unplugged and powered down. Add power and boot up. A known
limitation is that after reboot, CHIPs Bluetooth controller may not work until you power and
physically disconnect from a power source.
About bluetoothctl
Well be using the command bluetoothctl to find, pair with, and connect to devices.
In the terminal, type
bluetoothctl
This starts up bluetoothctl in interactive mode. You should see output like
[NEW] Controller 7C:C7:08:05:CD:77 BlueZ 5.27 [default]
[NEW] Device 60:33:4B:13:A7:45 nyb
which is a list of MAC addresses of CHIPs Bluetooth controller chip (the first line) and any other
devices that have been paired with CHIP in the past. Use the help command - it lists all the very
useful commands in the bluetoothctl interactive mode.
In Bluetooth interactive mode, use the command
power on
which outputs
which will start printing MAC addresses and names (if available) of Bluetooth devices in your
vicinity.
Pair to a device with the MAC address and the pair command:
pair 1C:1A:C0:85:5E:2C
This may fail if the device is powered off, goes out of range, or your toddler spills water on it.
Heres what failure looks like:
As the scan continues, youll eventually see the device you are interested in, so copy that MAC
address and type:
pair 15:03:26:A0:26:26
Some Bluetooth devices need user input to pair. In that case, youll need to turn the agent 'on so
the device can post a password, and you can enter it:
agent on
will output
Agent registered
pair DC:2C:26:D7:B6:8F
will output
Now you can use the Bluetooth device to enter the PIN code, then hit enter. The terminal will give
some status about the pairing:
00001000-0000-1000-8000-00805f9b34fb
00001124-0000-1000-8000-00805f9b34fb
00001200-0000-1000-8000-00805f9b34fb
Now that you have paired the Bluetooth device, you wont have to do that again. However, the
device still needs to be connected:
connect 15:03:26:A0:26:26
/devices/platform/soc@01c00000/1c28c00.serial/tty/ttyS1/hci0/hci0:4/0005:05AC:3
232.0001/input/input1
Trust between people leads to understanding and perhaps even harmonious living. Trust between
bluetooth devices means that you wont have to connect the device every time its near. Which is a
sort of harmony, I suppose. Once you have connected a bluetooth device to CHIP, if you intend to
use it again, you can trust it:
trust 15:03:26:A0:26:26
You may want CHIP to not pair or connect to a device - perhaps the conveniently trusted device
needs to be freed for another connection. Whatever the reason, if you want to remove your
Bluetooth device,
remove 15:03:26:A0:26:26
Troubleshooting
If your Bluetooth controller module on CHIP is not functioning, you can easily find the problem.
Type
bluetoothctl
Then theres a problem with CHIP recognizing the Bluetooth module. Read the very first
instructions at the top of this tutorial.
Install X-windows
Requirements
Installation (xfce4)
It might take some time to download and install all the packages, since there are a lot of
dependencies and libraries involved. Once installed, start the windowing system with the command
startx&
(the & runs Xwindows in the background, so you can still use your terminal). After a minute or so,
youll get an image on the monitor:
Now you can use a mouse and keyboard to explore CHIP and launch programs.
Troubleshooting
If you get errors from apt that report unmet dependencies, you can run the command
sudo apt-get install -f
which will force installation of any alternate or missing dependencies of any installed packages.
PureData is a graphical programming environment, primarily for making audio and multimedia
applications. This tutorial describes how to build the vanilla version of PD. This is a very
rudimentary version of PD - it does not compile or build the extras objects, such as bob~ or
expr~.
Get Source
First, download and un-archive the source from Miller Puckettes website:
wget http://msp.ucsd.edu/Software/pd-0.46-7.src.tar.gz
gzip -d pd-0.46-7.src.tar.gz
tar -xvf pd-0.46-7.src.tar
Install Dependencies
Now, youll need to install all the dependencies and make a symbolic link to wish:
sudo apt-get update
jack
Build It
Youre ready to go ahead and build, running some scripts, then making the install:
cd ~/pd-0.46-7/
./autogen.sh
Youll probably also want the extra objects such as expr, expr~, clone, fiddle~, bonk~, bob~,
sigmund~, et al. These require an extra build step. The extra folder is in pd-0.46-7/extra, so if
you are still insrc/ you can
cd ../extra
make install
Youll probably also want to install the deken plugin so you can add more externals to your bag of
tricks: https://github.com/pure-data/deken
Ive also found this kiosk plugin to be very handy for making a pure data widow take up the entire
screen: https://puredata.info/downloads/kiosk-plugin
Set Up Priority
Now set up pd so it can run in real-time priority mode for low latency (launching with pd -rt). This
is mostly about giving audio the necessary thread priority and giving the chip user access:
sudo nano /etc/security/limits.conf
Navigate to the end of the file (CTL-V) and add the lines
@audio - rtprio 99
and save (CTL-X to exit, youll be prompted to save) Youll want to double check that
the chip user is in the audio group:
sudo adduser username audio
Then reboot CHIP:
sudo reboot
Test PD
Now test pd with a test patch. Open a terminal and use this command, which should result in a
sine wave:
wget http://log.liminastudio.com/wp-content/uploads/2012/06/testPatch.pd_.zip
unzip testPatch.pd_.zip
If you need to test out a midi controller to make sure data is coming into CHIP, you can do this
from the terminal. Youll want to list the connected devices, if not just to get the port name as ALSA
sees it.
amidi -l
Example output might look like shell Dir Device Name IO hw:1,0,0 DS1 MIDI 1
You can then use the command to display MIDI data bytes (in hex) in the terminal window:
amidi -p hw:1,0,0 -d
Uninstall
Run PD
You can then use the mouse and keyboard to go through the Browser and learn more about PD.
References
pd extended on RPi
Headless CHIP
One of the most amazing features of CHIP is that its insanely simple to use it as small, wireless
computer. Low power requirements, battery powered with charge management, and both WiFi and
Bluetooth connectivity makes CHIP easy to run as a headless, autonomous machine. Of course,
youll still want to access it and control it without a monitor or keyboard. You can control CHIP with
another computer and a serial or network connection. Heres how you do this.
Begin
If you want to use CHIP without a monitor or keyboard attached, theres a few ways to do this:
Requirements
CHIP
SSH
SSH (or Secure Shell) is a common way to control a computer remotely over a network. Youll
need to first get your computers network name or IP address before you can connect.
How to get your IP address.
The easiest way to get CHIPs IP address is to hook up a monitor and keyboard. Bootup, log
in, connect to the network if you need to, and use the command
hostname -i
which will output a lot of data. Look for the line wlan0 and the entry inet, something like:
inet 10.1.1.99
Connect to CHIP over a network
Now that you know your IP address, use the command:
ssh [email protected]
Youll be asked for CHIPs password. The default password is chip. This process is the same if
CHIP is connected to the network using built-in wireless or a USB-Ethernet adapter.
Make Connections To CHIP Easy
You may want to setup your network so it will always provide the same (static) IP address to CHIP.
You can then rely on CHIP always having the same IP address.
Alternatively, you can setup zero configuration networking to give your CHIP an easily
remembered name.
You are now free to do whatever it is you do with Linux command line on CHIP.
No wireless network
No USB-ethernet cable
Connect a USB to UART cable to the Ground (GND), Transmit (TX), and Recieve (RX) pins on
CHIP
Well find those on header U14, pin outs 1,3 and 5. See the following diagram, which assumes
CHIPs USB ports are pointed up
You may find other USB-UART cables that have more wires. There will be some labels that will
help you connect to the correct pins (GND, TX, RX) on terminal U14. Just be sure to check your
datasheets to make sure youre using the correct pins.
Install the driver
For this tutorial, we are using a PL2303 USB to Serial cable. If you are using this one too, youll
probably need to install the PL2303 driver for your computer.
Connect the Cable
You only need to worry about three of the wires:
The red wire carries voltage (+5 V). DO NOT USE THE RED ONE. Plugging in a +5 V pin could
damage your CHIP
Again, there is a chance your USB to UART cable may be different. Please check your data
sheets!
Simpler than the UART cable, you can connect to CHIP with a USB cable to your computer. Your
computer will see CHIP as a serial device as well as provide power to the CHIP. Either way, youll
be able to continue with the directions below.
Once youve connected CHIP to your computer with the UART or USB cable, open up a terminal.
Theres lots out there. Heres a few:
Linux: screen, cu
No matter the software, youll need to set some settings for the port (aka connection). Youll
probably only need to set the baud rate, as the others will be defaults:
Parity: none
Data Bits: 8
Stop bits: 1
Using screen
If you are using screen, the command will look something like this:
screen /dev/tty.usbserial 115200
or
What comes after the /dev/ may vary among different systems and connections. You can narrow
down the choices by using the command
ls /dev/tty*
booting chip, youll probably need to hit 'return on your keyboard a few times to get CHIP to send
some data to you and print in your terminal.
Youll then be prompted for login. Defaults are username root and password chip.
You are now free to do whatever it is you do with Linux command line on CHIP.
Using PuTTy
If you are on Windows using PuTTy, youll probably want to open the windows Device Manager to
get the COM name for the serial port. The device wont show up in the Ports list until after the
kernel loads and presents the device, so it may take a minute or so before Windows actually
detects it.
In the PuTTy configuration panel, you can now use the COM name to set it up. In this case, its
COM4:
Press Open to open a terminal window ,where you can log in to CHIP with username and
password chip.
You are now free to do whatever it is you do with Linux command line on CHIP.
You can make working with CHIP on a local network much more convenient by installing zero-conf
networking. OS X users may know this as Bonjour.
With zero-conf properly configured, your CHIP can be contacted using a name, such
as chip.local, rather than an IP. This is especially convenient, if you are moving CHIP to
different networks that might assign different IP addresses. The key technology for this in Linux is
the avahi set of tools. There are a few related packages, but this tutorial is a minimal installation to
get it up and running.
Requirements
CHIP
Install avahi
to install the necessary libraries. You may want to configure the daemon with this service file so
you can find Apple Bonjour devices from CHIP :
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
</service-group>
You can now find the hostname that you can use to reach CHIP:
hostname
Use Zero-Conf
From a terminal on another computer you can try accessing CHIP with the network
name chip.local
and enter the password (default is chip). Thats it. You can now reach CHIP without knowing the
IP.
If you have more than one CHIP on the network, or you just want to change the name from chip
to fit into your network name scheme, you can modify the hostnames file. Open the file in an editor:
sudo nano /etc/hostname
where youll see a single word chip. Just modify that line (for example, change it to
bobofettywap) and save the file. Youll also need to modify the hosts file where youll need to
change the first line127.0.0.1 chip where you replace chip with your new username.
sudo nano /etc/hosts
Finally, to get this new name to broadcast over the network restart avahi-daemon:
sudo /etc/init.d/avahi-daemon restart
Other packages
You may want to explore some of the other features of avahi, such as browsing a network for other
zero-configure enabled computers. Theres a package you can install:
sudo apt-get update &
which gives you a set of tools for browsing the network, such as the command
avahi-browse -d local _ssh._tcp --resolve -t
which will list other zero-configure-enabled devices on the local network. You could ssh to your
Macintosh named bananna, for example with
ssh username@bananna
Troubleshooting
or not known
then you either need to wait a minute or try installing avahi-daemon again, but pay closer attention
to any errors that apt-get returns.
If you cant connect to CHIP even though you are sure avahi is properly configured, confirm that
your CHIP and the computer you are trying to connect are on the same local network (and on the
same subnet).
FAQs
Frequently Asked Questions
Televisions are the most commonly available screen in the world and the vast majority of
Composite video can be integrated without adding licensing fees to the cost of C.H.I.P.
Composite is a very low profile connector, allowing us to keep the footprint of the board
small for people wanting to build C.H.I.P. into projects.
Yes! Not having a case for C.H.I.P. is one of the ways we are able to keep our costs down. As
makers, were excited to introduce people to the physical components of computers and show
them that electronics arent scary, theyre fun! We hope to spark curiosity and encourage people to
begin tinkering themselves.
With the VGA and HDMI adapters, C.H.I.P. is designed to work at 720p resolution, though the Mali
400 GPU is technically capable of up to 1080p outputs. The composite video connector operates
at the SD resolution of 640x480.
QUANTITY. Our partners at Allwinner worked hard to help us find how to reduce costs, so we
could introduce C.H.I.P. to EVERYBODY. To sell C.H.I.P. for $9, we need to order tens of
thousands of chips. By using common, available, and volume-produced processor, memory, and
wifi chips, we are able to leverage the scales at which tablet manufacturers operate to get
everyone the best price.
YES! Very open source! We are still in the process of testing and refining the whole C.H.I.P. family.
As we hit design completion, well release our design files. Weve already released quite a bit!
Check them out at our GitHub repo!
Technically, yes, but the components are soldered on and not intended to be swapped out. If you
really like reworking small BGA and fine pitch components, though, we wont stop you. :)
If you want additional storage, you can attach a USB drive!
Eight digital GPIOs, one PWM pin, SPI, TWI (I2C), UART, USB, CSI, Parallel LCD output,
touchpanel input, stereo audio out, mono audio in, composite video out, and a whole bunch of
power rails in and out.
Absolutely! The schematics and layout for the boards, both of C.H.I.P. and C.H.I.P.s adapters will
be released as they are finalized for production. From that, you can build whatever sort of adapters
or add-ons you want!
Not at this time. Because there is no onboard digital audio support from our processor, C.H.I.P.s
current design only has analog audio output via the headphone/composite jack. Adding a USB
sound card is the easiest way to beef up your CHIPs digital audio output options.
YES! C.H.I.P. comes with Linux installed, and a selection of our favorite programs and games. Like
any real computer, you can download more software and customize C.H.I.P.s applications and
operating system to suit your needs!
The easiest way to accomplish this is to power C.H.I.P. as usual via the microUSB port. Attach a
USB keyboard with an accessory USB port on it, then connect your wired mouse to that port.
Alternatively, a bluetooth keyboard or mouse can be used to free up the need for USB
connections.
For more advanced use cases, C.H.I.P. can be powered via its interconnects, leaving both the full
size USB and microUSB ports available to attach devices to.
Due to a lack of support for Silverlight (the back-end software that allows Netflix to be streamed) in
Linux, it is unlikely that Netflix will work on C.H.I.P. using entirely open-source software. This would
require someone to come up with an alternate back-end. That said, some very astute backers
have reported that Netflix should be possible by installing the Google Chrome browser, which
allows Netflix streaming via HTML5.
Yes! C.H.I.P. has a tiny power on-off button and a status LED on the board itself.
Were focused on individual uses of C.H.I.P. but what youre talking about is called clustering, and
may be possible A good place to start, if youre interested in clustering, is reading up on DebianBeowulf
C.H.I.P. has exposed CSI pins on its headers for integrating a camera directly to the processor, or
if drivers and sensor tuning sound like a bit much, you can always add a USB camera too.
You can connect a display through the 3.5mm () TRRS composite video port on C.H.I.P. If youd
like to connect to a vga or hdmi monitor, we have adapters available for that! You can also connect
any parallel LCD to the exposed display pins on C.H.I.P.s headers.
No. But by integrating reliable storage onto the device, were able to both save you a getting
started cost and allow Linux to come preinstalled on C.H.I.P. meaning its ready to go when it
arrives at your door. One of the big goals of this project is making C.H.I.P. easy to use, and this
goes a long way towards that end. If you need additional storage, its easy to add an SD card
reader or other USB storage with the built-in USB port.
YES! The 1/8" mini (TRRS) jack can be used either with a video-only cable, audio only cable,
headphones, headphones with mic, OR a combined Audio/Video composite cable. Pretty versatile
little port, isnt it!?
C.H.I.P. comes pre-loaded with some of our favorite open-source applications, and the ability to
install hundreds more. Whats even more exciting, though, is that if any given program isnt
supported out of the box, the community can work together to make it happen. Thats what we <3
about Open Source Software.
C.H.I.P. is a real computer, and can run software written in all kinds of programming languages,
so long as theres a compiler for them. Python, Java (via JDK8), Ruby, PHP, Squeak, C++, JS,
Assembly, BF.. even our favorite, ArnoldC, and lots lots more.
No, but adding an RTC is a great (and easy) hardware hack, for the folks that need it. For most
people, though, an RTC isnt necessary since it is easy to get C.H.I.P. to pull time from a remote
NTP server over wifi.
We are using a JST-2.0 PH 2-pin shrouded male connector to connect LiPo cells to C.H.I.P. In the
current design there are also BATT pins available on the interconnect headers, which allow
alternate battery connectors/placements when attaching C.H.I.P. to a custom PCBA.
You can find out more from the Allwinner R8 User Manual and the R8 Datasheet
Any single-cell (3.7V) LiPo battery will work with C.H.I.P. You can go bigger or smaller than
3000mAH as needed for your project!
No. But it does have built-in 802.11b/g/n wifi. But if you like wires, you can use a USB-Ethernet
connector.
Its a computer! It will tell you anything. If you want to find out more details about CHIPs processor,
use the command:
cat /proc/cpuinfo
: 0
BogoMIPS
: 1001.88
model name
Features
: 0xc08
CPU revision
: 2
Hardware
Serial
: 162542c10c427777
Revision
: 0000
507108 kB
MemAvailable:
382592 kB
MemFree:
Buffers:
298600 kB
0 kB
Cached:
92216 kB
Active:
98752 kB
Active(anon):
73180 kB
SwapCached:
Inactive:
Inactive(anon):
Active(file):
Inactive(file):
Unevictable:
Mlocked:
HighTotal:
HighFree:
LowTotal:
LowFree:
SwapTotal:
SwapFree:
Dirty:
Writeback:
AnonPages:
Mapped:
Shmem:
0 kB
64096 kB
5812 kB
25572 kB
58284 kB
0 kB
0 kB
0 kB
0 kB
507108 kB
298600 kB
0 kB
0 kB
0 kB
0 kB
70660 kB
37768 kB
8360 kB
Slab:
22784 kB
SUnreclaim:
11224 kB
SReclaimable:
KernelStack:
PageTables:
NFS_Unstable:
11560 kB
1176 kB
2240 kB
0 kB
Bounce:
WritebackTmp:
0 kB
0 kB
CommitLimit:
253552 kB
VmallocTotal:
507904 kB
Committed_AS:
VmallocUsed:
VmallocChunk:
615216 kB
14560 kB
482532 kB
Troubleshooting
CHIP Wont Boot or Startup
Problem: I attached a keyboard, monitor, and powered CHIP, but it does not do anything. The
LEDs are on, but I cant do anything with CHIP!
Fixes: Dont worry, your CHIP is probably fine. This can be fixed by reflashing CHIP from our web
flasher.
Problem: I attached a mouse and keyboard, and my CHIP suddenly turned off.
Fixes: Like most tiny computers, the USB port on CHIP provides a limited amount of power. When
you plug in a keyboard and an optical mouse, for example, they will draw too much current from
CHIP, not leaving enough for the processor. As a result, CHIP will immediately shut down. There
are a few ways to avoid this.
Use a bluetooth keyboard and mouse. Yes, this is a very specific solution, but a good one
when you are only using the USB port for keyboard and mouse. Keeps your desk cleaner
too!
Execute the command sudo axp209 --no-limit in the terminal before you attach your
USB peripherals.
Provide power from a supply connecting ground and 5V the pins headers 1 and 2 on U13.
Problem: My CHIP booted fine until it got to loading the desktop GUI, then it shut down.
Fixes: This is usually the result of an underpowered power supply. We recommend a 5V power
supply with a minimum 1A current rating.
You can find the current rating on your power supplys Output - it should read 1000
mA or 1A (or a higher number). You may need a magnifying glass to read it, but they all
should have this info on the label!
Instead of powering CHIP using the microUSB port, try using the header pins CHG-IN
(U13-2) and GND (U13-1).
Add a LiPo battery. This provides enough extra current and power buffer to prevent this
problem.
No Video Output
wrong TRRS arrangement: try different ends of your cable. Make sure is subscribes to this
PAL monitor: CHIP outputs NTSC format video by default. You can change this, however,
Video trace cut for mic in: This is pretty unlikely, but if you are working with a used CHIP,
it may be that the tip connector has been switched to work as a microphone input. Before
you do fix this with a bit of solder, take a close look at your board to see if there is evidence
of a score mark indicating the cut trace.
How to Contact Us
Compliance Statement
FCC ID: 2AF9F-HELLA1337
IC: 20863-HELLA1337
FCC
This device complies with part 15 of the FCC Rules. Operation is subject to the following two
conditions: (1) This device may not cause harmful interference, and (2) this device must accept
any interference received, including interference that may cause undesired operation.
Industry Canada
This device complies with Industry Canada license-exempt RSS standard(s). Operation is subject
to the following two conditions:
2. This device must accept any interference received, including interference that may cause
undesired operation of the device.
Cet appareil est conforme Industrie Canada une licence standard RSS exonrs (s). Son
fonctionnement est soumis aux deux conditions suivantes: 1. Cet appareil ne doit pas provoquer
d'interfrences 2. Cet appareil doit accepter toute interfrence reue, y compris les interfrences
pouvant provoquer un fonctionnement indsirable de l'appareil.
Information to User
CAUTION: Changes or modifications not expressly approved for compliance could void your
authority to operate this equipment.