VoCore2

The Coin-sized Linux Computer

VoCore2 + USB Header (Power Supply Only)

VoCore2 + USB Header + MicroSD Slot

note1: DDR2 is ESD sencitive, better to use hot air solder without touch

note2: in order to increase antenna sencitive, RF parts change to 0201.


Parameters

Details
SIZE25.6mm x 25.6mm x 3.0mm
CPUMT7628, 580 MHz, MIPS 24K
MEMORY128MB, DDR2, 166MHz
STORAGE16M NOR on board, support SDXC up to 2TB
WIRELESS802.11n, 2T2R, speed up to 300Mbps.
ANTENNAOne U.FL slot, one on board antenna.
ETHERNET1 port/5 ports, up to 100Mbps.
USBSupport USB 2.0(host only), up to 480MBit/s.
GPIO around 40 (pinmux)
UARTx3 (UART2 for debug console)
PWMx4
PCIe(option)x1(option)
TEMPERATURE0C ~ 40C(full load) or -10C ~ 70C
POWER SUPPLY3.6V ~ 5.5V, 500mA
POWER CONSUMPTION74mA wifi standby, 230mA wifi full speed, 5V input.
LOGIC LEVELall logic pins are 3.3V, current 4mA/8mA

Change Log

20240101:

1. update 16MB NOR flash to 32MB, firmware patch required for openwrt 18.06, link here

20230705:

1. uboot change uart speed to match linux driver.

2. rf circuit change to 0201 instead of 0402 for better signal.

3. solder mask color change to green from white.

4. change NOR flash package from WSON6x5 to WSON8x6.

Sources

PCB&SCH: Download   md5:882079c4bf94b5f27e0769a553bdb670

Symbol and Model(KiCAD7): Download

OpenWrt Source Code: Download

UBoot: Download

WiFi Driver: Download (Github) support latest openwrt

3D Model(.step): Link

Downloads

note: normally, we upgrade or fix brick are using Firmware. Flash Image is a clone of the full flash, for professional usage only.

Firmware Patch: Download

note: screen driver can be change at /lib/modules/4.14.*/fbusb.ko

Firmware(DDR128,NOR16/32,OpenWrt 23.05.2): Download

Flash Image: Download   md5:f4c527a1e563d0ad7ef9ab0b5e0b35c6

UBoot(128MB): Download   md5:69335f57c44bb6d7c6901c260689cc94

UBoot(64MB): Download   md5:2f00b3029f60df99f926781b582f9a35

Datasheet: Download

FCC: 2AC4RVOCOREV2

ROHS: Download

note: To get toolchain, please check github.com/vonger/vocore2, after compile openwrt you will get it.

Links

VoCore2 + Dock   Ultimate version makes it easy to use.

VoCore Camera   Tiny camera supports h264 + microphone.

Details

VoCore2 is a successor of VoCore, make it more fast, stable, but still same size.

pin id is same as the one on MT76x8 datasheet in source

LeftNameMuxNote
-+3.3VO+3.3V outputmax output current 100mA
30TXD0GPIO12, UART0 Lite TXDpull down to GND, Test/Normal mode pin.
31RXD0GPIO13, UART0 Lite RXD3.3V
29REFCLKGPIO11, reference clock, SDXC CLK*
33P0RP10/100 PHY Port #0 RXP
34P0RN10/100 PHY Port #0 RXN
35P0TP10/100 PHY Port #0 TXP
36P0TN10/100 PHY Port #0 TXN
43PWM110/100 PHY Port #1 TXN, GPIO15, PWM Channel, SPI Slave ClockSecond Column
44PWM010/100 PHY Port #1 TXP, GPIO14, PWM Channel, SPI Slave Chip SelectSecond Column
40RXD210/100 PHY Port #1 RXN, GPIO17, UART2 Lite RXD, SPI Slave MOSI4.7K pull down to GND
42TXD210/100 PHY Port #1 RXP, GPIO16, UART2 Lite TXD, SPI Slave MISO
45P2RP10/100 PHY Port #2 RXP, GPIO18, PWM Channel
46P2RN10/100 PHY Port #2 RXN, GPIO19, PWM Channel
47P2TP10/100 PHY Port #2 TXP, GPIO20, PWM Channel
48P2TN10/100 PHY Port #2 TXN, GPIO21, PWM Channel
49SD WPGPIO22, 10/100 PHY Port #3 TXP, SDXC WP
50SD CDGPIO23, 10/100 PHY Port #3 TXN, SDXC CD
TopNameMuxNote
-GNDGroud
28SPI CS0SPI Master Chip Select 04.7K pull up to 3.3V
25SPI CLKSPI Master Clock4.7K pull up to 3.3V
26SPI MISOSPI Master In Slave Out
27SPI MOSISPI Master Out Slave In4.7K pull down to GND
24SPI CS1SPI Master Chip Select 14.7K pull down to GND
21I2C SDGPIO5, I2C Data, SDXC D2*4.7K pull up to 3.3V
20I2C CLKGPIO4, I2C Clock, SDXC D3*4.7K pull up to 3.3V
19I2S CLKGPIO3, I2S Bit Clock, SDXC CMD*
18I2S WSGPIO2, I2S L/R Clock, SDXC D0*
16I2S SDIGPIO0, I2S Data In, SDXC D1*
17I2S SDOGPIO1, I2S Data Out4.7K pull down to GND
RightNameMuxNote
-GNDGround
148RXD1GPIO12, UART1 Lite RXD
147TXD1GPIO13, UART1 Lite TXDpull up to 3.3V, GPIO/JTAG mode pin
141GPIO41GPIO41, JTAG TMSJTAG needs 10K pull up, R9 -> R6
140GPIO40GPIO40, JTAG ClockJTAG needs 10K pull up, R9 -> R6
139GPIO39GPIO39, JTAG ResetJTAG needs 10K pull up, R9 -> R6
143GPIO43GPIO43, JTAG TDOJTAG needs 10K pull up, R9 -> R6
142GPIO42GPIO42, JTAG TDIJTAG needs 10K pull up, R9 -> R6
138RSTReset, touch GND to reset
137GPIO38GPIO38
136GPIO37GPIO37
-+3.3VO+3.3V outputmax output current 100mA
-GNDGround
-GNDGround
-+1.8VO+1.8V outputmax output current 100mA
BottomNameMuxNote
-GNDGround
51SD D1GPIO24, 10/100 PHY Port #3 RXP, SDXC D1
52SD D0GPIO25, 10/100 PHY Port #3 RXN, SDXC D0
54SD CLKGPIO26, 10/100 PHY Port #4 RXP, SDXC CLK
55SD CMDGPIO27, 10/100 PHY Port #4 RXN, SDXC CMD
56SD D3GPIO28, 10/100 PHY Port #4 TXP, SDXC D3
57SD D2GPIO29, 10/100 PHY Port #4 TXN, SDXC D2
-+3.3VO+3.3V outputmax output current 100mA
61USB DPUSB2.0 Data+
62USB DMUSB2.0 Data-
-+5.0VI+5.0V inputmin input current 500mA
-+5.0VI+5.0V inputmin input current 500mA
-GNDGround
-GNDGround
MiddleNameMuxNote
133PCI CKPPCI Express External Reference Clock Output+
132PCI CKNPCI Express External Reference Clock Output-
130PCI RXNPCI Express Differential Receiver RX-
129PCI RXPPCI Express Differential Receiver RX+
-GNDGround
127PCI TXPPCI Express Differential Transmit TX+
126PCI TXNPCI Express Differential Transmit TX-
135PCI RSTPCI Express Device Reset

* five ethernet ports mode, sdcard mux to i2s/i2c.

* hole diameter is 0.6mm.

Tutorials

Connect to Power

GIF: fast power up with USB cable Link

1. connect to 3.6V~6.0V and GND with a stable power source, such as USB charger.

note: be careful, high voltage will damage your VoCore.

2. if everything works, after 30 seconds, you will find VoCore2 in your computer hotspot list.

3. connect to VoCore2 hotspot.

4.a using ssh or putty or similar tools login to VoCore2(root/vocore).

4.b using USB2TTL, please check "Connect to VoCore through USB2TTL" section.

important : UART speed is 115200bps, 8bits, no even, 1 stop bit


Connect to VoCore through USB2TTL

video tutorial: youtube

1. connect USB2TTL.TXD to VoCore2.RXD2, USB2TTL.RXD to VoCore2.TXD2, USB2TTL.GND to VoCore2.GND.

2. setup your serial application(such as putty/teraterm for windows, kermit for mac,linux) in your computer to 115200bps, 8 data bits, no even, 1 stop bit.

3. power on your VoCore2, now you should find some text output.


Connect to your local wireless network(AP + STA Mode)

This tutorial is for firmware 20190316(default) or later which based on openwrt 18.06.2.

tutorial please check at Beginner: OpenWrt 18.06 stable version

This tutorial is for firmware 20170527(obsoleted) which based on openwrt cc.

note: please upgrade your firmware to 20190316 or later version, this version is out of date.

video tutorial(require USB2TTL): youtube

1. connect to your VoCore through USB2TTL.

2. run command in console(UART console).

3. setup network to enable dhcp(get ip from your hotspot).

uci delete network.wwan

uci set network.wwan=interface

uci set network.wwan.proto=dhcp

uci commit

4. setup firewall to enable access to internet through your hotspot.

uci del_list firewall.@zone[1].network=wwan

uci add_list firewall.@zone[1].network=wwan

uci set firewall.@zone[1].input=ACCEPT

uci set firewall.@zone[1].output=ACCEPT

uci set firewall.@zone[1].forward=ACCEPT

uci set firewall.@zone[1].masq=1

uci set firewall.@zone[1].mtu_fix=1

uci commit

5. setup wireless to enable ap+sta mode.

uci set wireless.sta.ssid="[TARGET AP SSID]"

uci set wireless.sta.key="[TARGET AP PASSWORD]"

uci set wireless.sta.network=wwan

uci set wireless.sta.disabled=0

uci commit

note:replace [TARGET AP SSID] to the target ap ssid you want to connect to, [TARGET AP PASSWORD] is its password.

5. restart your network, it will work.

/etc/init.d/network restart

6.(option) once ap+sta is totally up, disable it in config, so if next time your target ap is missing, you still able to connect to VoCore2.

uci set wireless.sta.disabled=0

uci commit

/etc/init.d/network restart

sleep 10

uci set wireless.sta.disabled=1

uci commit

note: better copy the three lines to /etc/rc.local


Upgrade VoCore2 Firmware

1. download the latest firmware(not the flash image) in this page Download section.

2. connect to your VoCore hotspot, open browser view 192.168.1.1 or 192.168.61.1.

3. LuCI console using username: root, password: vocore, click on "Login" (picture part 1).

4. select "System" -> "Backup/Flash Firmware" (picture part 2).

5. click on "Choose File", choose your downloaded firmware(again, not the flash image, picture part 3), then click "Flash Image".

6. it will upload the firmware to your VoCore2, takes a few seconds, check if the md5 matched. (picture part 4)

7. if everything ok, press "Process".

8. normally it will take 2~3 minutes, please wait until it is ready.

note: if power cut off during the upgrade process, your VoCore2 will brick, check "Fix Bricked VoCore2"


Compile OpenWRT for VoCore2

video tutorial: youtube

1. install Ubuntu 14.04 64bit Server(or later version) to Virtual Machine(2GB memory, 20GB disk space).

2. in virtualbox, we will need install some packages to compile openwrt:

sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev libssl-dev gawk

3. download openwrt, check github.com/vonger/vocore2 README.md

4. call "make menuconfig" in the openwrt folder, configure openwrt in menu, choose MT7688/28/VoCore2 in menu.

5. call "make" in the openwrt folder, start the make process

note: for full tutorials, please check Beginner Tutorials


Compile your App for VoCore2

1. compile openwrt for VoCore2, it will create toolchain or download it at Downloads/Toolchain(for Ubuntu 14.04 64bit).

2. make a simple code in C, compile it in command line.

/path.to.your.toolchain/bin/mipsel-openwrt-linux-gcc -g yourcode.c -o yourcode

3. after this, you will get an executable file named "yourcode", use scp, copy it to your VoCore2

4. in VoCore2, call chmod +x yourcode, after that, you can run it in VoCore2, call ./yourcode

note: setup a develop environment, please check Develop and Debug on Qt Creator


Upload Firmware

1. upload firmware through luci, please read "Upgrade Firmware" section.

2. upload firmware through console, connected to VoCore hotspot.

(1) copy from pc to VoCore[operate in PC]: scp [your firmware].bin root@192.168.61.1:/tmp/vocore2.bin

here is two choices, 2.a will erase all data/config you write to VoCore, 2.b just upgrade the firmware but keep them.

(2.a) write to VoCore nor flash[operate in VoCore]: mtd -e firmware write /tmp/vocore2.bin firmware

(2.b) system upgrade VoCore nor flash[operate in VoCore]: sysupgrade /tmp/vocore2.bin firmware

(3) wait until mtd done, reboot your VoCore.

note: if you want set your VoCore back to first time boot up, call "firstboot" in console.


Fix Bricked VoCore2 (uboot alive)

1. connect your VoCore2 to computer through USB2TTL(UART2 RXD2+TXD2+GND).

2. open tty tools(must have kermit protocol), such as kermit, ckermit, teraterm.

3. power up your VoCore, once you find: "0: Load system code then write to Flash via SERIAL.", press '0'.

note: VoCore will show "## Ready for binary (kermit) download to 0x80100000 at 115200 bps..."

note: kermit: press Ctrl and '\' same time then press 'c', you will switch to kermit command console.

4. use kermit send function in teraterm/ckermit.

5. send upgrade firmware to VoCore, after that, back to VoCore uboot console.

note: kermit: call "send path/to/your/upgrade/file/on/pc.bin" to send firmware, around 10 minutes, once it finished, call 'c' back to console.

6. wait around 20~30 seconds, firmware uploaded, your VoCore will reboot.


Fix Bricked VoCore2 (uboot dead)

1. You must have another VoCore/VoCore2 or one flash loader and six wires.

2.1 using another VoCore/VoCore2 to recover your bricked VoCore2.

2.1 check blog https://vonger.cn/?p=8054.

2.2 using flash loader to recover your bricked VoCore2.

2.2.a disconnect VoCore2 from power;

2.2.b connect VoCore2 GND to flash loader GND;

2.2.c VoCore2 +3.3V to flash loader +3.3V;

2.2.d VoCore2 SPI MISO -> flash loader SPI MISO;

2.2.e VoCore2 SPI MOSI -> flash loader SPI MOSI;

2.2.g VoCore2 SPI CS0 -> flash loader SPI CS;

2.2.h VoCore2 SPI CLK -> flash loader SPI CLOCK;

2.2.i VoCore2 RST -> VoCore2 GND; (keep VoCore2 in reset mode)

note: if not work, swap MISO/MOSI.

2.2.j now, download then send "Flash Image" to VoCore2.2.

2.2.k remove wires, connect VoCore2 back to power, everything should back normal.

3. option: better to upgrade your firmware after recover, Flash Image is out of date.

note: if you want set your VoCore back to first time boot up, call "firstboot -y" in console.


Enable another antenna on VoCore2(standard version only)

On VoCore2 standard version we have another antenna, default it is power off status(to avoid two antenna cross-talk to each other), if you have a external U.FL antenna, you can connect it to VoCore2, convert it from a portable router to a full function 802.11n router, maxmize its speed and signal strength.

note: suggest distance between two antennas is > 6cm

1. download a factory setting read/write tool to /tmp/ on VoCore, chmod +x /tmp/ant*.

2. we run the following script to enable second antenna.

enable second antenna:

sh /tmp/ant2.sh

disable second antenna:

sh /tmp/ant1.sh

3. call firstboot -y(all your setting will lost!), then reboot.


Recover factory setting

Sometimes, we might mess the factory setting section on VoCore2 flash(address can be find by "cat /proc/mtd"), that will cause wifi driver failed to start. To recover it, we need the following steps:

1. get into VoCore console, by ehternet or serial port(TTL).

2. copy mt7628.sh to your VoCore2 /tmp, or directly copy the txt in the script and run in console.

3. run mt7628.sh by "sh /tmp/mt7628.sh", then reboot.

note: your mac address will be fixed to b8:d8:12:67:01:73, you can change this to modify your VoCore2 mac address.


Update UBOOT from serial port

1. reboot vocore2 at serial console, check "Connect to VoCore through USB2TTL"

2. once reboot, it will show "7: Load Boot Loader code then write to Flash via Serial.", now we are ready to send the data.

3. use kermit or compatible tools send uboot.bin, uboot.bin can be get from from Download section.

4. wait until it reboot.


Directly write to memory/register

We made a simple tool for this, download here, its name is "mem", put the executable file into /bin/ in VoCore2.

0. make sure your firmware has /dev/mem, for secure reason, it is disabled for default openwrt compile.

1. read from register/memory, for example: 0x10000060, pin control register

example: mem 0x10000060

2. write to register/memory, must in 32bits(4bytes)

example: mem 0x10000064 0x05540555

here is an example bash script flash the LED every second on VoCore2

mem 0x10000064 0x05540555; mem 0x10000604 0x1000; while [ 1 ]; do mem 0x10000634 0x1000; sleep 1; mem 0x10000644 0x1000; sleep 1; done

Mount VoCore2 onto customized PCB(ASMT)

1. on customized PCB, suggest keeping 16mm x 16mm rectangle clearance(no copper) for better signal on board antenna.

2. suggest using hot air instead of iron, DDR2 is a ESD sencetive part, some iron leak current might cause permanent damage.

3. suggest reflow 260C max 10 seconds, longer might cause damage to VoCore.

4. in order to use castle hole on VoCore, milling a hole(the yellow border in second picture) on your mount board is necessary. Check Sources/SMT Mount Footprint for KiCAD file.

5. before SMT, make sure you bake VoCore2 at 120C at least 12 hours.

6. recommend, please remove the mac address tag on main chip, add heatsink.

7. one package contains 1120pcs, please use them in 6 months, and stock in cool/dry place without package opened.