VoCore: A coin-sized Linux computer with wifi

This device is NOT RECOMMENDED for future use with OpenWrt due to low flash/ram.
DO NOT BUY DEVICES WITH 4MB FLASH / 32MB RAM if you intend to flash an up-to-date and secure OpenWrt version onto it! See 4/32 warning for details.

1) This device does not have sufficient resources (flash and/or RAM) to provide secure and reliable operation.
This means that even setting a password or changing simple network settings might not be possible any more, rendering the device effectively useless. See OpenWrt on 4/32 devices what you can do now.

2) OpenWrt support for this device has ended in 2022.
19.07.10 was the last official build for 4/32 devices.

VoCore is an open hardware device which runs OpenWrt by design. It includes WiFi, USB, UART (serial), SPI, and more than 20 General Purpose IOs (GPIO) in a small, one inch package. It can be used for automation projects and is an excellent tool for learning about and implementing embedded systems.

The VoCore comes as a fully functional, populated card.

VoCore is designed to mate with a dock which adds 1 USB and 1 network port. The dock is available where the VoCore is sold.
Since the dock design is free, there may be other docks available from different suppliers.

CPU Ram Flash Network USB Serial JTag
Ralink RT5350 @ 360MHz 32MiB 8MiB, 16MiB 1 (dock) 1 (dock) Yes Yes

Installation is made easy because VoCore was designed to use OpenWrt.
The device is shipped, pre-installed with a working OpenWrt image.
An official OpenWrt image can be downloaded from

I bricked my vocore1 +Doc( version 2 ) when I tried to Install the official Openwrt image listed here via luci. I did not try to do an upgrade. It booted properly the first time but after doing a uci commit from the commmand line it would not boot . It gave a out of memory kernel panic. I am attempting to unbrick the device now using kermit as outlined http://vocore.io/v1d.html . I was wanting to move from Openwrt 14.x to 15.x - Jim Perkins 1/10/2018

  1. open 192.168.61.1 from browser
  2. login: root/vocore
  3. go to update page
  4. upload image

Installing 21.02.3 lead to

 Uncompressing Kernel Image ... LZMA ERROR 1 - must RESET board to recover

Recovery to 19.07.9 was done with TFTP in u-boot with initramfs image openwrt-19.07.9-ramips-rt305x-vocore-16M-initramfs-kernel.bin

VoCore> setenv ipaddr 192.168.1.10; setenv serverip 192.168.1.221 ; tftp 0x81000000 vocore-initramfs.bin
      [..]
 ETH_STATE_ACTIVE!!
Using Eth0 (10/100-M) device
TFTP from server 192.168.1.221; our IP address is 192.168.1.10
Filename 'vocore-initramfs.bin'.
 TIMEOUT_COUNT=10,Load address: 0x81000000
Loading: Got ARP REPLY, set server/gtwy eth addr (98:e7:43:ba:19:12)
Got it
#################################################################
		 ##########################################
done
Bytes transferred = 3540587 (36066b hex)
NetBootFileXferSize= 0036066b
VoCore> bootm 0x81000000
Booting image at 81000000
   Image Name:   MIPS OpenWrt Linux-4.14.267
   Created:      2022-02-16  20:47:59 UTC
   Image Type:   MIPS Linux Kernel Image (lzma compressed)
   Data Size:    3540523 Bytes =  3.4 MB
   Load Address: 80000000
   Entry Point:  80000000
   Load Kernel:
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
[    0.000000] Linux version 4.14.267 

The update firmware using openwrt-19.07.9-ramips-rt305x-vocore-16M-squashfs-sysupgrade.bin

Booting the OpenWRT 21.02.3 Initramfs crashed due to out of memory.

The board comes preflashed and ready to run.
It is accessible over open wifi (SSID Vocore) or the ethernet port.

  • The IP address for the alpha and beta releases is 192.168.1.1
  • The IP address for release version 1 is 192.168.61.1
  • The default address from images downloaded from OpenWrt is 192.168.1.1

For security reasons wifi access should be changed to limit/protect using WPA.

The default network configuration is:

Interface Name Description Default configuration
br-lan LAN & WLAN 192.168.1.1/24
vlan1 (eth0.1) LAN None
radio0 WLAN Disabled

Only 2 of the 5 ethernet ports have been exported: 0 and 4 (1, 2 and 3 are not exported).
For using port 0 a separate dock is needed (like VoDock).
However, port 4 is not avaiable on VoDock and needs a custom dock.

Port Switch port
LAN 1 0
LAN 2 4

failsafe_and_factory_reset

To enter Failsafe mode you need to manually pause OpenWrt booting, since this board doesn't have any button.

hardware.button on howto use and configure the hardware button(s).

This board doesn't come with any button. However, new buttons can be added using one of the unused GPIOs.

Instruction set MIPS
Vendor Ralink
bootloader U-Boot
System-On-Chip RT5350F (MIPS 24Kc V7.4)
CPU/Speed 24Kc V7.4 360 Mhz
Flash-Chip winbond W25Q64FVSTIM, 25Q128FVTM
Flash size 8192 KiB, 16384KiB
RAM-Chip EtronTech EM63A165TS-6G
RAM 32 MiB
Wireless Ralink RT5350 2.4ghz 802.11bgn
Ethernet Ralink RT5350 Fast Ethernet
2 (on PCB) / 1 (in use with VoDock)
USB 1 (on PCB) / 1 (in use with VoDock)
Serial Yes
JTAG Yes

Originally VoCore should have been shipped with 8MiB flash, which the alpha boards (v1.0a) did. On the production run though there where no 8MiB chips available and therefore (not only buyers of the 16MiB version but) everyone got 16MiB flash. So if the VoCore is labeled as v1.0 it probably got 16MiB flash, but better make sure by looking at the flash-chip (8 pin Winbond chip):

Flash chip Flash size
25Q64 8MiB
25Q128 16MiB

The default configuration for OpenWrt is 8MiB flash (which can also be used on the 16MiB version, with less available space of course). To create a 16MiB image compiling yourself is necessary. In target/linux/ramips/dts/VOCORE.dts there's a section partition@50000. Change the second value of reg from 0x7b0000 (=8MiB config) to 0xfb0000 (=16MiB config).
(tested for 14.07, source)

PCB

Top Bottom

Layout

Alpha Beta

To connect to Serial port on this specific device check pins (TXD2, RXD2, GND) on Layout with baud 57600.

port.jtag general information about the JTAG port, JTAG cable, etc.

To connect to JTAG port on this specific device check pins on Layout

generic.debrick

There are three options:

  • JTAG method → see jtag
  • serial method → see serial
  • TFTP method → see tftp

JTAG always works, but needs a JTAG adapter.
For serial and TFTP method, bootloader must be availaible.

Config Power Usage
Wifi Enabled 5V 200mA
Wifi Disabled 5V 120mA

In order to automatically export GPIO buttons you can modify the DTS file adding the gpio-keys section.
However, don't forget to remove the GPIOs you want to use as buttons from the LEDs/GPIOs sections, since a specific GPIO can only be used for one purpose at a time.

gpio-keys-polled {
	compatible = "gpio-keys-polled";
	#address-cells = <1>;
	#size-cells = <0>;
	poll-interval = <20>;
	reset {
		label = "reset";
		gpios = <&gpio0 0 0>;
		linux,code = <0x198>;
	};
};

[ 0.000000] Linux version 3.10.32 (vonger@debian) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.01 r39957) ) #3 Thu Mar 20 21:56:24 HKT 2014 [ 0.000000] SoC Type: Ralink RT5350 id:1 rev:3 [ 0.000000] bootconsole [early0] enabled [ 0.000000] CPU revision is: 0001964c (MIPS 24KEc) [ 0.000000] MIPS: machine is VoCore v0.3 [ 0.000000] Determined physical RAM map: [ 0.000000] memory: 02000000 @ 00000000 (usable) [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x00000000-0x01ffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x00000000-0x01ffffff] [ 0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes. [ 0.000000] Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 32 bytes [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128 [ 0.000000] Kernel command line: console=ttyS0,57600 rootfstype=squashfs,jffs2 [ 0.000000] PID hash table entries: 128 (order: -3, 512 bytes) [ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000000] Writing ErrCtl register=0007a400 [ 0.000000] Readback ErrCtl register=0007a400 [ 0.000000] Memory: 29356k/32768k available (2132k kernel code, 3412k reserved, 544k data, 200k init, 0k highmem) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] NR_IRQS:256 [ 0.000000] CPU Clock: 360MHz [ 0.000000] Calibrating delay loop... 239.61 BogoMIPS (lpj=1198080) [ 0.070000] pid_max: default: 32768 minimum: 301 [ 0.070000] Mount-cache hash table entries: 512 [ 0.080000] pinctrl core: initialized pinctrl subsystem [ 0.090000] NET: Registered protocol family 16 [ 0.130000] bio: create slab <bio-0> at 0 [ 0.140000] rt2880_gpio 10000600.gpio: registering 24 gpios [ 0.150000] rt2880_gpio 10000600.gpio: registering 24 irq handlers [ 0.160000] Switching to clocksource MIPS [ 0.170000] NET: Registered protocol family 2 [ 0.180000] TCP established hash table entries: 512 (order: 0, 4096 bytes) [ 0.200000] TCP bind hash table entries: 512 (order: -1, 2048 bytes) [ 0.210000] TCP: Hash tables configured (established 512 bind 512) [ 0.220000] TCP: reno registered [ 0.230000] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 0.240000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 0.250000] NET: Registered protocol family 1 [ 0.260000] rt-timer 10000100.timer: maximum frequncy is 7324Hz [ 0.310000] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.330000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 0.350000] msgmni has been set to 57 [ 0.360000] io scheduler noop registered [ 0.360000] io scheduler deadline registered (default) [ 0.380000] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled [ 0.390000] 10000c00.uartlite: ttyS0 at MMIO 0x10000c00 (irq = 20) is a 16550A [ 0.410000] console [ttyS0] enabled, bootconsole disabled [ 0.410000] console [ttyS0] enabled, bootconsole disabled [ 0.440000] m25p80 spi32766.0: found s25fl064k, expected gd25q64 [ 0.450000] m25p80 spi32766.0: s25fl064k (8192 Kbytes) [ 0.460000] 4 ofpart partitions found on MTD device spi32766.0 [ 0.470000] Creating 4 MTD partitions on "spi32766.0": [ 0.480000] 0x000000000000-0x000000030000 : "u-boot" [ 0.500000] 0x000000030000-0x000000040000 : "u-boot-env" [ 0.510000] 0x000000040000-0x000000050000 : "factory" [ 0.530000] 0x000000050000-0x000000800000 : "firmware" [ 0.540000] 0x00000013fb81-0x000000800000 : "rootfs" [ 0.550000] mtd: partition "rootfs" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only [ 0.580000] mtd: device 4 (rootfs) set to be root filesystem [ 0.590000] mtd: partition "rootfs_data" created automatically, ofs=0x360000, len=0x4a0000 [ 0.610000] 0x000000360000-0x000000800000 : "rootfs_data" [ 0.630000] eth0: done loading [ 0.640000] rt3xxx-usbphy ubsphy.3: loaded [ 0.650000] rt2880_wdt 10000120.watchdog: Initialized [ 0.660000] TCP: cubic registered [ 0.670000] NET: Registered protocol family 17 [ 0.680000] 8021q: 802.1Q VLAN Support v1.8 [ 0.710000] VFS: Mounted root (squashfs filesystem) readonly on device 31:4. [ 0.720000] Freeing unused kernel memory: 200K (8029e000 - 802d0000) procd: Console is alive procd: - watchdog - procd: - preinit - [ 7.100000] rt305x-esw 10110000.esw: link changed 0x00 Press the [f] key and hit [enter] to enter failsafe mode Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level [ 8.220000] usbcore: registered new interface driver usbfs [ 8.230000] usbcore: registered new interface driver hub [ 8.240000] usbcore: registered new device driver usb [ 8.260000] dwc_otg: version 2.72a 24-JUN-2008 jffs2 is ready [ 10.910000] jffs2: notice: (260) jffs2_build_xattr_subsystem: complete building xattr subsystem, 1 of xdatum (0 unchecked, 0 orphan) and 11 of xref (0 dead, 0 orphan) found. switching to jffs2 procd: - early - procd: - watchdog - procd: - ubus - procd: - init - Please press Enter to activate this console. [ 14.730000] NET: Registered protocol family 10 [ 14.750000] l2tp_core: L2TP core driver, V2.0 [ 14.760000] l2tp_netlink: L2TP netlink interface [ 14.780000] nf_conntrack version 0.5.0 (461 buckets, 1844 max) [ 14.810000] ip6_tables: (C) 2000-2006 Netfilter Core Team [ 14.850000] Loading modules backported from Linux version master-2014-01-23-0-g62c147d [ 14.860000] Backport generated by backports.git backports-20140124-0-g1256d3e [ 14.890000] ip_tables: (C) 2000-2006 Netfilter Core Team [ 14.960000] xt_time: kernel timezone is -0000 [ 15.020000] cfg80211: Calling CRDA to update world regulatory domain [ 15.040000] cfg80211: World regulatory domain updated: [ 15.050000] cfg80211: DFS Master region: unset [ 15.050000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 15.070000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 15.090000] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 15.100000] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 15.120000] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz), (300 mBi, 2000 mBm) [ 15.130000] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (300 mBi, 2000 mBm) [ 15.150000] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm) [ 15.260000] PPP generic driver version 2.4.2 [ 15.280000] NET: Registered protocol family 24 [ 15.330000] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 5350, rev 0500 detected [ 15.350000] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 5350 detected procd: - init complete - [ 29.350000] device eth0.1 entered promiscuous mode [ 29.360000] device eth0 entered promiscuous mode [ 29.380000] br-lan: port 1(eth0.1) entered forwarding state [ 29.390000] br-lan: port 1(eth0.1) entered forwarding state [ 30.470000] IPv6: ADDRCONF(NETDEV_CHANGE): eth0.1: link becomes ready [ 31.390000] br-lan: port 1(eth0.1) entered forwarding state [ 32.790000] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready [ 32.800000] device wlan0 entered promiscuous mode [ 32.840000] br-lan: port 2(wlan0) entered forwarding state [ 32.850000] br-lan: port 2(wlan0) entered forwarding state [ 32.860000] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready [ 34.850000] br-lan: port 2(wlan0) entered forwarding state


This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2024/02/12 08:58
  • by 127.0.0.1