Linux "Plug Computer" for $99 - many possibilities
I have noticed that there are several other companies now using this exact same model, and basically re-selling them as fancy NAS devices. Here is some more info on that: http://www.linuxdevices.com/news/NS9634061300.html (the list of similar products is near the bottom).
I havn't really gotten a chance to put it through its paces yet, as I have been slowed down by trying to compile the uvcvideo module so that I can plug in a usb 2.0 web cam for testing some video-security applications I am working on.
Since I'm ssh'd into it now, I will just cut and paste some stuff:
root@debian:~# uname -a
Linux debian 2.6.22.18 #1 Thu Mar 19 14:46:22 IST 2009 armv5tejl GNU/Linux
root@debian:~# cat /proc/cpuinfo
Processor : ARM926EJ-S rev 1 (v5l)
BogoMIPS : 1192.75
Features : swp half thumb fastmult edsp
CPU implementer : 0x56
CPU architecture: 5TE
CPU variant : 0x2
CPU part : 0x131
CPU revision : 1
Cache type : write-back
Cache clean : cp15 c7 ops
Cache lockdown : format C
Cache format : Harvard
I size : 16384
I assoc : 4
I line length : 32
I sets : 128
D size : 16384
D assoc : 4
D line length : 32
D sets : 128
Hardware : Feroceon-KW
Revision : 0000
Serial : 0000000000000000
root@debian:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00400000 00020000 "uImage"
mtd1: 1fb00000 00020000 "rootfs"
root@debian:~# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 507M 329M 179M 65% /
tmpfs 252M 0 252M 0% /lib/init/rw
varrun 252M 36K 252M 1% /var/run
varlock 252M 0 252M 0% /var/lock
udev 252M 8.0K 252M 1% /dev
tmpfs 252M 0 252M 0% /dev/shm
tmpfs 252M 0 252M 0% /var/cache/apt
(Note that when I received the unit the FS was only about 23% full, I have since then installed kernel-source and other packages).
Here are the options available in the "uboot" pre-boot environment:
Marvell>> ?
? - alias for 'help'
base - print or set address offset
boot - boot default, i.e., run 'bootcmd'
bootd - boot default, i.e., run 'bootcmd'
bootext2 dev:boot_part1,boot_part2 addr boot_image linux_dev_name
bootm - boot application image from memory
bootp - boot image via network using BootP/TFTP protocol
bubt - Burn an image on the Boot Nand Flash.
chpart - change active partition
cmp - memory compare
cmpm - Compare Memory
cp - memory copy
cpumap - Display CPU memory mapping settings.
crc32 - checksum calculation
date - get/set/reset date & time
dclk - Display the MV device CLKs.
dhcp - invoke DHCP client to obtain IP/boot params
diskboot- boot from IDE device
echo - echo args to console
eeprom - EEPROM sub-system
erase - erase FLASH memory
ext2load- load binary file from a Ext2 filesystem
ext2ls - list files in a directory (default /)
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls - list files in a directory (default /)
fi - Find value in the memory.
flinfo - print FLASH memory information
fsinfo - print information about filesystems
fsload - load binary file from a filesystem image
g - start application at cached address 'addr'(default addr 0x40000)
go - start application at address 'addr'
help - print online help
icrc32 - checksum calculation
ide - IDE sub-system
iloop - infinite loop on address range
imd - i2c memory display
imm[.b, .s, .w, .l] - i2c memory modify (auto-incrementing)
imw - memory write (fill)
inm - memory modify (constant address)
iprobe - probe to discover valid I2C chip addresses
ir - reading and changing MV internal register values.
loop - infinite loop on address range
ls - list files in a directory (default /)
map - Diasplay address decode windows
md - memory display
me - PCI master enable
mm - memory modify (auto-incrementing)
mp - map PCI BAR
mtdparts- define flash/nand partitions
mtest - simple RAM test
mv_diag - perform board diagnostics
mv_diag
- display all available tests
mv_diag all
- run all available tests
mv_diag test1
- run specified test
mw - memory write (fill)
nand - NAND sub-system
nboot - boot from NAND device
nbubt - Burn a boot loader image on the Boot Nand Flash.
nm - memory modify (constant address)
pci - list and access PCI Configuration Space
phyRead - Read PCI-E Phy register
pciePhyWrite - Write PCI-E Phy register
phyRead - Read Phy register
phyWrite - Write Phy register
ping - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
protect - enable or disable FLASH write protection
rarpboot- boot image via network using RARP/TFTP protocol
rcvr - Satrt recovery process (Distress Beacon with TFTP server)
reset - Perform RESET of the CPU
resetenv - Return all environment variable to default.
run - run commands in an environment variable
saveenv - save environment variables to persistent storage
se - PCI Slave enable
setenv - set environment variables
sflash - read, write or erase the external SPI Flash.
sg - scanning the PHYs status
sp - Scan PCI bus.
tftpboot- boot image via network using TFTP protocol
usb - USB sub-system
usbboot - boot from USB device
version - print monitor version
I havn't really gotten a chance to put it through its paces yet, as I have been slowed down by trying to compile the uvcvideo module so that I can plug in a usb 2.0 web cam for testing some video-security applications I am working on.
Since I'm ssh'd into it now, I will just cut and paste some stuff:
root@debian:~# uname -a
Linux debian 2.6.22.18 #1 Thu Mar 19 14:46:22 IST 2009 armv5tejl GNU/Linux
root@debian:~# cat /proc/cpuinfo
Processor : ARM926EJ-S rev 1 (v5l)
BogoMIPS : 1192.75
Features : swp half thumb fastmult edsp
CPU implementer : 0x56
CPU architecture: 5TE
CPU variant : 0x2
CPU part : 0x131
CPU revision : 1
Cache type : write-back
Cache clean : cp15 c7 ops
Cache lockdown : format C
Cache format : Harvard
I size : 16384
I assoc : 4
I line length : 32
I sets : 128
D size : 16384
D assoc : 4
D line length : 32
D sets : 128
Hardware : Feroceon-KW
Revision : 0000
Serial : 0000000000000000
root@debian:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00400000 00020000 "uImage"
mtd1: 1fb00000 00020000 "rootfs"
root@debian:~# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 507M 329M 179M 65% /
tmpfs 252M 0 252M 0% /lib/init/rw
varrun 252M 36K 252M 1% /var/run
varlock 252M 0 252M 0% /var/lock
udev 252M 8.0K 252M 1% /dev
tmpfs 252M 0 252M 0% /dev/shm
tmpfs 252M 0 252M 0% /var/cache/apt
(Note that when I received the unit the FS was only about 23% full, I have since then installed kernel-source and other packages).
Here are the options available in the "uboot" pre-boot environment:
Marvell>> ?
? - alias for 'help'
base - print or set address offset
boot - boot default, i.e., run 'bootcmd'
bootd - boot default, i.e., run 'bootcmd'
bootext2 dev:boot_part1,boot_part2 addr boot_image linux_dev_name
bootm - boot application image from memory
bootp - boot image via network using BootP/TFTP protocol
bubt - Burn an image on the Boot Nand Flash.
chpart - change active partition
cmp - memory compare
cmpm - Compare Memory
cp - memory copy
cpumap - Display CPU memory mapping settings.
crc32 - checksum calculation
date - get/set/reset date & time
dclk - Display the MV device CLKs.
dhcp - invoke DHCP client to obtain IP/boot params
diskboot- boot from IDE device
echo - echo args to console
eeprom - EEPROM sub-system
erase - erase FLASH memory
ext2load- load binary file from a Ext2 filesystem
ext2ls - list files in a directory (default /)
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls - list files in a directory (default /)
fi - Find value in the memory.
flinfo - print FLASH memory information
fsinfo - print information about filesystems
fsload - load binary file from a filesystem image
g - start application at cached address 'addr'(default addr 0x40000)
go - start application at address 'addr'
help - print online help
icrc32 - checksum calculation
ide - IDE sub-system
iloop - infinite loop on address range
imd - i2c memory display
imm[.b, .s, .w, .l] - i2c memory modify (auto-incrementing)
imw - memory write (fill)
inm - memory modify (constant address)
iprobe - probe to discover valid I2C chip addresses
ir - reading and changing MV internal register values.
loop - infinite loop on address range
ls - list files in a directory (default /)
map - Diasplay address decode windows
md - memory display
me - PCI master enable
mm - memory modify (auto-incrementing)
mp - map PCI BAR
mtdparts- define flash/nand partitions
mtest - simple RAM test
mv_diag - perform board diagnostics
mv_diag
- display all available tests
mv_diag all
- run all available tests
mv_diag test1
- run specified test
mw - memory write (fill)
nand - NAND sub-system
nboot - boot from NAND device
nbubt - Burn a boot loader image on the Boot Nand Flash.
nm - memory modify (constant address)
pci - list and access PCI Configuration Space
phyRead - Read PCI-E Phy register
pciePhyWrite - Write PCI-E Phy register
phyRead - Read Phy register
phyWrite - Write Phy register
ping - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
protect - enable or disable FLASH write protection
rarpboot- boot image via network using RARP/TFTP protocol
rcvr - Satrt recovery process (Distress Beacon with TFTP server)
reset - Perform RESET of the CPU
resetenv - Return all environment variable to default.
run - run commands in an environment variable
saveenv - save environment variables to persistent storage
se - PCI Slave enable
setenv - set environment variables
sflash - read, write or erase the external SPI Flash.
sg - scanning the PHYs status
sp - Scan PCI bus.
tftpboot- boot image via network using TFTP protocol
usb - USB sub-system
usbboot - boot from USB device
version - print monitor version
I got some time to work on the SheevaPlug, and this is the progress I have made so far:
* Had lots of "fun" figuring out how to use, erase, and reflash mtd partitions and using the jffs filesystem
* Compiled, installed, and booted latest kernel using an arm cross-compiler on a CentOS 5.3 system
* Compiled a modular kernel including Video4Linux and UVC support, and successfully connected a Logitech QuickCam 9000
* Compiled mjpeg-streamer and got it working
* Installed motion, havn't done much testing with it yet as I have never used it before
I havn't tried installing ZoneMinder directly on the SheevaPlug yet, but I am absolutely certain it would work. I'm not sure how many cameras it could run, I need to get a USB hub so that I can plug more than one in, and find out.
* Had lots of "fun" figuring out how to use, erase, and reflash mtd partitions and using the jffs filesystem
Code: Select all
root@debian:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00100000 00020000 "uBoot"
mtd1: 00400000 00020000 "uImage"
mtd2: 1fb00000 00020000 "rootfs"
Code: Select all
root@debian:~# uname -a
Linux debian 2.6.30-rc1-00002-g1758996 #1 PREEMPT Wed Apr 15 11:44:25 MST 2009 armv5tel GNU/Linux
Code: Select all
root@debian:~# lsmod
Module Size Used by
uvcvideo 59836 1
videodev 33944 2 uvcvideo
v4l1_compat 16180 2 uvcvideo,videodev
orion-ehci orion-ehci.0: new USB bus registered, assigned bus number 1
orion-ehci orion-ehci.0: USB 2.0 started, EHCI 1.00
USB Video Class driver (v0.1.0)
usb 1-1: new high speed USB device using orion-ehci and address 3
usb 1-1: configuration #1 chosen from 1 choice
input: UVC Camera (046d:0990) as /devices/platform/orion-ehci.0/usb1/1-1/1-1:1.0/input/input0
root@debian:~# ls -l /dev/vide*
crw-rw---- 1 root video 81, 0 2009-04-15 22:21 /dev/video0
Code: Select all
root@debian:~/mjpg-streamer# ./start.sh
MJPG Streamer Version.: 2.0
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 960 x 720
i: Frames Per Second.: 30
i: Format............: MJPEG
o: www-folder-path...: ./www/
o: HTTP TCP port.....: 8080
o: username:password.: disabled
o: commands..........: enabled
Code: Select all
top - 03:00:31 up 7:17, 1 user, load average: 0.00, 0.01, 0.00
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.9%us, 1.0%sy, 0.1%ni, 98.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 514888k total, 90052k used, 424836k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 66768k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2797 root 20 0 48752 2856 2368 S 1.2 0.6 3:44.89 mjpg_streamer
Code: Select all
Apr 16 03:21:17 debian motion: [0] Processing thread 0 - config file /etc/motion/motion.conf
Apr 16 03:21:17 debian motion: [0] Motion 3.2.11 Started
Apr 16 03:21:17 debian motion: [0] ffmpeg LIBAVCODEC_BUILD 3410688 LIBAVFORMAT_BUILD 3414017
Apr 16 03:21:17 debian motion: [0] Thread 1 is from /etc/motion/motion.conf
Apr 16 03:21:17 debian motion: [1] cap.driver: "uvcvideo"
Apr 16 03:21:17 debian motion: [1] cap.card: "UVC Camera (046d:0990)"
Apr 16 03:21:17 debian motion: [1] cap.bus_info: "usb-orion-ehci.0-1"
Apr 16 03:21:17 debian motion: [1] cap.capabilities=0x04000001
Apr 16 03:21:17 debian motion: [1] - VIDEO_CAPTURE
Apr 16 03:21:17 debian motion: [1] - STREAMING
Apr 16 03:21:17 debian motion: [1] Supported palettes:
Apr 16 03:21:17 debian motion: [1] 0: MJPG (MJPEG)
Apr 16 03:21:17 debian motion: [1] Selected palette MJPG
Apr 16 03:21:17 debian motion: [1] index_format 2 Test palette MJPG (320x240)
Apr 16 03:21:17 debian motion: [1] Using palette MJPG (320x240) bytesperlines 0 sizeimage 102400 colorspace 00000008
Apr 16 03:21:17 debian motion: [1] found control 0x00980900, "Brightness", range 0,255
Apr 16 03:21:17 debian motion: [1] ^I"Brightness", default 128, current 128
Apr 16 03:21:17 debian motion: [1] found control 0x00980901, "Contrast", range 0,255
Apr 16 03:21:17 debian motion: [1] ^I"Contrast", default 32, current 32
Apr 16 03:21:17 debian motion: [1] found control 0x00980902, "Saturation", range 0,255
Apr 16 03:21:17 debian motion: [1] ^I"Saturation", default 32, current 32
Apr 16 03:21:17 debian motion: [1] found control 0x00980913, "Gain", range 0,255
Apr 16 03:21:17 debian motion: [1] ^I"Gain", default 0, current 226
Apr 16 03:21:17 debian motion: [1] Resizing pre_capture buffer to 1 items
Apr 16 03:21:34 debian motion: [1] Closing video device /dev/video0
Apr 16 03:21:36 debian motion: [0] Motion terminating
-
- Posts: 381
- Joined: Sat Jan 17, 2009 7:49 pm
- Location: Germany
If you have motion working you should play around with it. I have it working on the router here and it works great. It's a fully functional security system and I've already got scripts that will email you on alarm and also wput files to a remote server. It can make videos on the fly and also wput them out. It doesn't have the pretty interface like Zoneminder but can easily be configured looking at the motion.conf or we could make up a custom web interface to make it easier to configure.
I can also control a lot of PTZ type stuff and do motion tracking. It's alittle harder on the CPU compared to mjpg_streamer but it's got to be far less then Zoneminder. It doesn't need apache2, mysql, and all the rest of that stuff. You can use mysql with it and also a live stream but it's not required as far as I know. I've yet to receive this device and it shipped a long time ago. I'll have to call and see what's up. I've moved on to the Uquiqity Routerstation, pretty impressive device for $60.
btw, jffs2 is used all the time in DD-WRT and Openwrt. You should try out openwrt sometime, you would be impressed with the packages they have compiled for it and the amount of devices it runs on.
I can also control a lot of PTZ type stuff and do motion tracking. It's alittle harder on the CPU compared to mjpg_streamer but it's got to be far less then Zoneminder. It doesn't need apache2, mysql, and all the rest of that stuff. You can use mysql with it and also a live stream but it's not required as far as I know. I've yet to receive this device and it shipped a long time ago. I'll have to call and see what's up. I've moved on to the Uquiqity Routerstation, pretty impressive device for $60.
btw, jffs2 is used all the time in DD-WRT and Openwrt. You should try out openwrt sometime, you would be impressed with the packages they have compiled for it and the amount of devices it runs on.
Would you post your instructions on how you changed the "uImage" partition size from 2M to 4M?Blazer wrote:I got some time to work on the SheevaPlug, and this is the progress I have made so far:
* Had lots of "fun" figuring out how to use, erase, and reflash mtd partitions and using the jffs filesystemCode: Select all
root@debian:~# cat /proc/mtd dev: size erasesize name mtd0: 00100000 00020000 "uBoot" mtd1: 00400000 00020000 "uImage" mtd2: 1fb00000 00020000 "rootfs"
Thanks,
~Joe Donth
-
- Posts: 381
- Joined: Sat Jan 17, 2009 7:49 pm
- Location: Germany
This thing must be really slow to produce, finally the other day I got the email saying it's been shipped. It's been so long since I purchased it I almost forgot about it.
Since I've got the Routerstation doing everything I need for half the price I'm probably going to sell it if anyone want's one. Pretty soon I'll be booting a full debian install like I've did with my ASUS deluxe.
Since I've got the Routerstation doing everything I need for half the price I'm probably going to sell it if anyone want's one. Pretty soon I'll be booting a full debian install like I've did with my ASUS deluxe.
-
- Posts: 381
- Joined: Sat Jan 17, 2009 7:49 pm
- Location: Germany
Low Cost Wireless IP Camera
Is Low Cost Wireless IP Camera a triple oxy-moron?
Any recommendations (that work with zm) will be appreciated.
BTW: I just got my sheevaplug - the packaging is very cute - I am impressed.
Once I get zm working on it, I will post the steps here.
Thanks
Any recommendations (that work with zm) will be appreciated.
BTW: I just got my sheevaplug - the packaging is very cute - I am impressed.
Once I get zm working on it, I will post the steps here.
Thanks
-
- Posts: 381
- Joined: Sat Jan 17, 2009 7:49 pm
- Location: Germany
Consider this when talking about Low Cost Wireless IP Camera,
ASUS WL500W = $90
Atheros mini pci card = $12 (if you want wireless working)
UVC camera = $30-$100
Openwrt = $0
or another router that I've found for $49 that runs Openwrt and is capable of running Motion with the Orbit. I have it up and running right now at 640x480 at 10 fps +. That combo could be under $100. I just set it all to the side now since most people either don't get what I'm trying to setup or just stick with the really expensive camera's.
For around $200 you can have Pan and Tilt Control with the Oribit AF using the above combo. You'll get resolution that is on Par with some really high priced cam's. Plus you get all the power of Openwrt,
1. Run a hotspot with Coova at the same Time your running a security camera, yes this is possible with the use of OPENVPN which fits on the router.
2. Run not only client mode but Virutal AP's with mulitple SSID's using only one radio card.
3. Choose from hundred's of pre-compiled packages to install.
The list goes on and on, so after you spend $99 on the sheeva plug + $CAM and spend hours compiling stuff to get it to work and still lack wireless my solution starts to look alittle better. Don't get me wrong, have a sheeva on the way but I'm second guessing what I'm actually going to do with the thing. Would be nice to have Zoneminder running on it, but "Motion" seems like the better choice for the low performance your going to get out of it.
ASUS WL500W = $90
Atheros mini pci card = $12 (if you want wireless working)
UVC camera = $30-$100
Openwrt = $0
or another router that I've found for $49 that runs Openwrt and is capable of running Motion with the Orbit. I have it up and running right now at 640x480 at 10 fps +. That combo could be under $100. I just set it all to the side now since most people either don't get what I'm trying to setup or just stick with the really expensive camera's.
For around $200 you can have Pan and Tilt Control with the Oribit AF using the above combo. You'll get resolution that is on Par with some really high priced cam's. Plus you get all the power of Openwrt,
1. Run a hotspot with Coova at the same Time your running a security camera, yes this is possible with the use of OPENVPN which fits on the router.
2. Run not only client mode but Virutal AP's with mulitple SSID's using only one radio card.
3. Choose from hundred's of pre-compiled packages to install.
The list goes on and on, so after you spend $99 on the sheeva plug + $CAM and spend hours compiling stuff to get it to work and still lack wireless my solution starts to look alittle better. Don't get me wrong, have a sheeva on the way but I'm second guessing what I'm actually going to do with the thing. Would be nice to have Zoneminder running on it, but "Motion" seems like the better choice for the low performance your going to get out of it.
-
- Posts: 381
- Joined: Sat Jan 17, 2009 7:49 pm
- Location: Germany
If you can compile all the needed stuff for Zoneminder then trust me, you can flash Openwrt onto a router and set it up.
Think of it like this router+motion+camera = sheeva+zm+camera or like this router+mjpg_streamer+camera and the stream being feed into a remote Zoneminder server, any combo will work. In the mean time still waiting to hear how Zoneminder turned out for Blazer or if he started working with Motion. I've been waiting for over a month on this Sheeva plug, i'll figure out something for it.
Think of it like this router+motion+camera = sheeva+zm+camera or like this router+mjpg_streamer+camera and the stream being feed into a remote Zoneminder server, any combo will work. In the mean time still waiting to hear how Zoneminder turned out for Blazer or if he started working with Motion. I've been waiting for over a month on this Sheeva plug, i'll figure out something for it.
Got my Plug, I plugged it into my network, and it got DHCP address. I can telnet to it as root.
Question:
The documentation seems written by developers for other developers. Unfortunately I am not one, so can some tell me why:
(1) I need the hyperterminal/minicom stuff for when I have a telnet/ssh connection?
(2) Why do I need to write the jaunty file system for?
About the only thing I get about this is the cross-compiler piece, which I have installed on my linux host.
(3) Once I compile zm on my host, how do I install it in the plug?
Thanks
Question:
The documentation seems written by developers for other developers. Unfortunately I am not one, so can some tell me why:
(1) I need the hyperterminal/minicom stuff for when I have a telnet/ssh connection?
(2) Why do I need to write the jaunty file system for?
About the only thing I get about this is the cross-compiler piece, which I have installed on my linux host.
(3) Once I compile zm on my host, how do I install it in the plug?
Thanks