Unleashing the Power of Your Embedded Device

What it is

OpenWrt is described as a Linux distribution for embedded devices.

Instead of trying to create a single, static firmware, OpenWrt provides a fully writable file system with package management. This frees you from the application selection and configuration provided by the vendor and allows you to customize the device through the use of packages to suit any application. For developer, OpenWrt is the framework to build an application without having to build a complete firmware around it; for users this means the ability for full customization, to use the device in ways never envisioned.

-http://www.openwrt.org/

What it has

Functional Linux system

Functional router out-of-the-box

Failsafe recovery mode

Discussed later

Development tools

Discussed later

Getting it

Prebuilt firmware image

  1. Determine platform, Manufacturer / Model / Version
  2. Verify support
    http://oldwiki.openwrt.org/TableOfHardware.html
  3. Select release
  4. New install (from OEM firmware)
  5. Upgrade (OpenWrt already installed)
  6. Download appropriate file
    http://downloads.openwrt.org/

Build your own

Discussed later

Installing it

From OEM firmware

From boot-loader

From OpenWrt

Using it

Initial login

Configuration steps

  1. Connect to router LAN port
  2. Router will assign address through dhcp
  3. #telnet 192.168.1.1
  4. Set root password
  5. Logout
  6. #ssh root@192.168.1.1
  7. Have Fun!

Understanding it

Flash Layout ("partitions")

  1. Boot Loader
  2. Read only image
  3. Writable area
  4. NVRAM area

"BIOS"

Squashfs ROM

JFFS2 flash

mini_fo overlay

Configuring it

NVRAM

UCI (Universal Configuration Interface)

Configuration files

Fixing it

Lan connection

Failsafe mode

Hardware reset

Reflash

Methods discussed under "Debricking"

Building it

Why

How

  1. Download/unpack "source" file (consists of patches and make files)
    kernel and application sources are downloaded automatically during make process
  2. #make
  3. #make menuconfig
  4. #make kernel_menuconfig (only to customize kernel)

What

Extending it

<builddir>\Packages\<packagedir>\makefile

Buildroot

SDK

Debricking it

Boot_Wait

Serial Console

JTAG

Pin Shorting