OpenWRT på PogoPlug

Pogo-Plug er en 15 år gammel computer med en 1.2 GHz ARM CPU, Gigabit ethernet og 256 Mb RAM.Denne gang skal vi installere OpenWRT

Pogo-Pluggen har jo også en indbygget flash-disk 128-256 Mb, nok til langt de fleste IOT applikationer.  I denne blog-post beskriver jeg hvordan jeg installerer Klipper som basis system på den indbyggede flash-disk og derefter installere jeg Klipper til styring af en 3D printer.

Doozan Forum er der beskrivelser af hvordan man kan installere OpenWRT som et Rescue system på sin Pogo-Plug.  Jeg anser min netværks bootede Pogo-Plugs som backup-løsningen, og systemet der er installeret på den interne flash-disk som target i de tilfælde hvor en stand-alone løsning er at foretrække.

OpenWRT på Pogo-Plug er  ganske udmærket supporteret, det er blot at finde de relevante bidder, installere dem, og konfigure uBoot til at boote OpenWRT, når først den første OpenWRT er installeret, fungerer den som en hvilket somhelst OpenWRT system, og kan opgraderes via WEB/ssh, hvilket bestemt er noget værd.

Jeg bruger ikke uBoot-versionen fra OpenWRT, men i stedet Bodhi’s se

OpenWRT på Pogo-Plug, som jeg installerede det

Download

Den første (.uImage), indeholder en openWRT der kan køres alene fra RAM, den skal vi boote, f.ex ved at kopiere den til FAT-usbstick som man så kan boote Pogo-Plug fra.

Med OpenWRT bootet på RAM-disk opgraderes på vanlig vis, via  sysupgrade, der vil installere en ny version af OpenWRT på den interne Flash-disk. sysupgrade.bin filen hentes direkte fra OpenWRT med wget.

cd /tmp
wget -O sysupgrade.bin https://downloads.openwrt.org/releases/24.10.2/targets/kirkwood/generic/openwrt-24.10.2-kirkwood-generic-cloudengines_pogoe02-squashfs-sysupgrade.bin
sysupgrade sysupgrade.bin

Også i fremtiden er upgrade processen præcis som andre OpenWRT systemer.

Det enesste som er en lille smule svært er at konfigure uBoot til at boote fra hhv uImage på USB-stick,  og OpenWRT instaleret på den interne Flash-Disk. 

Nedenfor er output fra fw_printenv

$ fw_printenv 
sudo: unable to resolve host pogo1: Name or service not known
addr_fdt=addr=0x700000
addr_uImage=addr=0x800000
addr_uInitrd=addr=0x1100000
addr_zImage=addr=0x800000
arcName=pogo_e02
arcNumber=3542
baudrate=115200
bootcmd=for dev in $default usbfat owrt nfs tftp; do if env exist "${dev}_boot"; then run ${dev}_boot; else run dev_bootz; fi; done; reset
bootdelay=3
console=ttyS0,115200
default=nfs
dev_bootm=run ${dev}_init; run set_bootargs; echo "dev_boot $dev $bootargs"; for blob in uImage uInitrd; do run load_dev_blob; done; bootm $uImage_addr $uInitrd_addr;
dev_bootz=run ${dev}_init; run set_bootargs; echo "dev_boot $dev $bootargs"; for blob in fdt zImage uInitrd; do run load_dev_blob; done; bootz $zImage_addr $uInitrd_addr $fdt_addr;
ethact=egiga0
ethaddr=00:25:31:03:00:00
file_fdt=file=dts/kirkwood-${arcName}.dtb
led_error=orange blinking
led_exit=green off
led_init=green blinking
load_dev_blob=run addr_$blob; if env exists file_$blob; then run file_$blob; else file=$blob; fi; setenv ${blob}_addr $addr; echo "dev=$dev blob=$blob file=$file addr=$addr ${blob}_addr"; run ${dev}_load;
machid=0x831
mtdids=nand0=orion_nand
mtdparts=mtdparts=orion_nand:1M(u-boot),-(ubi)
nc_if=ping $serverip
nc_init=setenv autoload no; dhcp
nc_preboot=run nc_init; setenv nc_ready 0; for pingstat in 1 2 3 4 5; do; sleep 1; if run nc_if; then setenv nc_ready 1; fi; done; if test $nc_ready -eq 1; then run nc_start; fi
nc_start=setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;
nfs_init=setenv autoload no; dhcp; setenv options root=/dev/nfs rootfstype=nfs rootwait nfsroot=$rootpath,v3 ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:eth0:off
nfs_load=nfs $addr $rootpath/boot/$file
owrt_boot=run set_bootargs;ubi part ubi; ubi read 0x800000 kernel; bootm 0x800000 $bootargs
partition=nand0,2
set_bootargs=setenv bootargs "console=$console $nc_options $options $mtdparts"
sntp_init=setenv autoload no; dhcp; setenv ntpserverip $serverip; sntp
stderr=serial
stdin=serial
stdout=serial
tftp_init=run nfs_init
tftp_load=tftpboot $addr $serverip:$file
usbfat_boot=run set_bootargs;usb start; fatload usb 0:1 0x800000 uImage; bootm 0x800000

Næste gang installeres Klipper

This entry was posted in 3D printer, HomeAutomation, Linux, OpenWrt. Bookmark the permalink.