GnuBee Personal Cloud One
The GnuBee Personal Cloud 1 (GB-PC1) is a network-attached storage (NAS) device specifically engineered to run free, libre, open source software
Supported Versions
Hardware Highlights
Installation
→ Install OpenWrt (generic explanation)
You will need to follow the initial installation procedure described below if you install openwrt for the first time.
Flash Layout
OpenWRT layout:
dev | size | erasesize | name |
---|---|---|---|
mtd0 | 00030000 | 00010000 | u-boot |
mtd1 | 00010000 | 00010000 | u-boot-env |
mtd2 | 00010000 | 00010000 | factory |
mtd3 | 01fb0000 | 00010000 | firmware |
mtd4 | 00245520 | 00010000 | kernel |
mtd5 | 01d6aae0 | 00010000 | rootfs |
mtd6 | 01ac0000 | 00010000 | rootfs_data |
Neil Brown's builds mtd table:
dev | size | erasesize | name |
---|---|---|---|
mtd0 | 00030000 | 00010000 | u-boot |
mtd1 | 00010000 | 00010000 | u-boot-env |
mtd2 | 00010000 | 00010000 | factory |
mtd3 | 01fb0000 | 00010000 | firmware |
OEM easy installation
GnuBee already comes with a preinstalled version of OpenWRT. However, original maintainer does not maintain its OpenWRT builds, but you can use official OpenWRT builds, as they are officially supported by the community.
Two methods are available:
- Install via existing Openwrt: install/reinstall/upgrade via web interface or CLI.
- Install via USB key: See below
Install OpenWRT from USB key to internal memory
- Fetch firmware file
- From official openwrt: https://downloads.openwrt.org/snapshots/targets/ramips/mt7621/gnubee_gb-pc*
- Use squashfs-sysupgrade images
- Important: Something broke between 21.02.3 and 22.03.0-rc6 as the kernel report LZMA error on startup
- LZMA error: Last snapshot as of 2022/08/10
- From original author:
- Quite old and deprecated, not recommended
- Grab USB key, and format it in `vfat`
- Copy `*-gnubee_gb-pc1-squashfs-sysupgrade.bin` firmware into usb key root dir, as a file called: `gnubee.bin`
- Plug the usb key close to the power button (other port, next to power plug also tested to work).
- Reboot GnuBee. If the device finds an usb key with a `gnubee.bin` file, it will flash it.
- Wait firmware to be flashed. You can check into serial port if everything goes well: screen /dev/ttyUSB0 57600. The led should be blinking until process is over. Once over, the led is plain green.
- Remove usb key then reboot device
- The device should be available on any ethernet port on http://192.168.1.1/
Install Recovery tools or Debian from USB key
Neil Brown's builds are available here: http://neil.brown.name/gnubee/. There are some documentation provided with those builds. Actually, this image can help to troubleshoot, fix and install other OS.
This image is also capable to boot other systems:
- Simply create a partition with a GNUBEE-ROOT label to boot it. You can choose any of micro-sd, internal drive, md array or LVM. You can have different partitions with different OS, and swap labels if you want to change boot OS.
- For ext3/ext4 with sde1 partition: tune2fs -l /dev/sde1 | grep GNUBEE-ROOT || e2label /dev/sde1 GNUBEE-ROOT
- For fat: exfatlabel /dev/sda3 GNUBEE-ROOT
You can use the following to build your own images: https://github.com/neilbrown/gnubee-tools
Install OpenWRT from USB key to other memory
This include sdcard, disks or anything. It's worth noting you need to install openwrt first then move its root partition. Just follow the usual procedure: extroot_configuration
OEM installation using the TFTP method
This seems possible via the bootloader, but not tested yet.
Upgrading OpenWrt
Official procedure from existing OpenWRT variants: https://github.com/gnubee-git/GnuBee_Docs/wiki/Install-OpenWRT
LuCI Web Upgrade Process
- Browse to
http://192.168.1.1/cgi-bin/luci/mini/system/upgrade/
LuCI Upgrade URL - Upload image file for sysupgrade to LuCI
- Wait for reboot
Terminal Upgrade Process
If you don't have a GUI (LuCI) available, you can alternatively upgrade via the command line. There are two command line methods for upgrading:
sysupgrade
mtd
Note: It is important that you put the firmware image into the ramdisk (/tmp) before you start flashing.
sysupgrade
- Login as root via SSH on 192.168.1.1, then enter the following commands:
cd /tmp wget http://downloads.openwrt.org/snapshots/trunk/XXX/xxx.abc sysupgrade /tmp/xxx.abc
mtd
If sysupgrade
does not support this router, use mtd
.
- Login as root via SSH on 192.168.1.1, then enter the following commands:
cd /tmp wget http://downloads.openwrt.org/snapshots/trunk/XXX/xxx.abc mtd write /tmp/xxx.abc linux && reboot
Debricking
GnuBee is provided with a serial to USB cable. From a Linux computer, you can get to the serial console with: screen /dev/ttyUSB0 57600
Failsafe mode
Basic configuration
→ Basic configuration After flashing, proceed with this.
Set up your Internet connection, configure wireless, configure USB port, etc.
Specific Configuration
Network interfaces: Default
The default network configuration is:
Interface Name | Description | Default configuration |
---|---|---|
br-lan | LAN | 192.168.1.1/24 |
lan1 | LAN1 BLACK | None |
lan2 | LAN2 BLUE | None |
The default network UCI configuration looks like:
config interface 'loopback' option device 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config globals 'globals' option ula_prefix 'fd85:4785:e688::/48' option packet_steering '1' config device option name 'br-lan' option type 'bridge' list ports 'ethblack' list ports 'ethblue' config interface 'lan' option device 'br-lan' option proto 'static' option ipaddr '192.168.1.1' option netmask '255.255.255.0' option ip6assign '60'
Network interfaces: ethblue and ethblack as DHCP client
Since this device may not really be used as router, it may be useful to configure it as DHCP client on both interface. Here we also override MAC addresses for example:
# cat /etc/config/network config interface 'loopback' option device 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config globals 'globals' option packet_steering '1' option ula_prefix 'fdf9:b66d:e4a2::/48' config interface 'brblack' option proto 'dhcp' option device 'lan1' option macaddr '18:B5:51:AB:AB:15' config interface 'brblue' option proto 'dhcp' option device 'lan2' option macaddr '18:B5:51:AB:AB:16'
Then apply changes:
/etc/init.d/network restart
Then check on your DHCP server which IP took the device to be able to reconnect. It can be useful to assign a static IP to those macaddresses.
Switch Ports (for VLANs)
By default, both ethernet ports configuration is bridged on br-lan
:
Port | Switch port |
---|---|
LAN 1 | ethblue |
LAN 2 | ethblack |
Buttons
→ hardware.button on howto use and configure the hardware button(s).
The GnuBee Personal Cloud One has the following buttons:
BUTTON | Event |
---|---|
Power (Big red button) | power on/off |
Reset (Small black button) | reset |
Hardware Performance
Overall performances are acceptable for this kind of device (single user), however do not expect good performances if moderately intensively used. The fact there is a huge performance hit when used in raid1 or LVM mirroring defeat a bit the purpose of this NAS device. You may want to workaround your own setup, but this the device does perform well enough to provide acceptable performance AND data redundancy.
Network Performance (iperf3)
Test run on: OpenWrt 23.05.0 r23497-6637af95aa
Conclusion:
- Network performances are a bit weird, this device is less efficient when used in DHCP mode than when used in DHCP client. Both network ports returned the same performances.
- Overall network perf should not be a bottleneck
Testing against localhost:
iperf3 -c 127.0.0.1 Connecting to host 127.0.0.1, port 5201 [ 5] local 127.0.0.1 port 44824 connected to 127.0.0.1 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 71.2 MBytes 595 Mbits/sec 0 959 KBytes [ 5] 1.00-2.01 sec 70.0 MBytes 582 Mbits/sec 0 2.00 MBytes [ 5] 2.01-3.02 sec 70.0 MBytes 585 Mbits/sec 0 2.00 MBytes [ 5] 3.02-4.00 sec 70.0 MBytes 596 Mbits/sec 0 2.00 MBytes [ 5] 4.00-5.01 sec 71.2 MBytes 592 Mbits/sec 0 2.00 MBytes [ 5] 5.01-6.01 sec 70.0 MBytes 587 Mbits/sec 0 2.00 MBytes [ 5] 6.01-7.01 sec 70.0 MBytes 589 Mbits/sec 0 2.00 MBytes [ 5] 7.01-8.01 sec 70.0 MBytes 586 Mbits/sec 0 2.00 MBytes [ 5] 8.01-9.01 sec 70.0 MBytes 588 Mbits/sec 0 2.00 MBytes [ 5] 9.01-10.00 sec 70.0 MBytes 590 Mbits/sec 0 2.00 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 702 MBytes 589 Mbits/sec 0 sender [ 5] 0.00-10.00 sec 702 MBytes 589 Mbits/sec receiver iperf Done.
When device is a DHCP server with static IP:
iperf3 -c 192.168.1.1 Connecting to host 192.168.1.1, port 5201 [ 5] local 192.168.1.136 port 35392 connected to 192.168.1.1 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 42.4 MBytes 356 Mbits/sec 0 221 KBytes [ 5] 1.00-2.00 sec 40.7 MBytes 341 Mbits/sec 0 221 KBytes [ 5] 2.00-3.00 sec 41.2 MBytes 346 Mbits/sec 0 255 KBytes [ 5] 3.00-4.00 sec 41.1 MBytes 345 Mbits/sec 0 255 KBytes [ 5] 4.00-5.00 sec 41.4 MBytes 348 Mbits/sec 0 255 KBytes [ 5] 5.00-6.00 sec 41.3 MBytes 347 Mbits/sec 0 255 KBytes [ 5] 6.00-7.00 sec 41.0 MBytes 344 Mbits/sec 0 255 KBytes [ 5] 7.00-8.00 sec 41.3 MBytes 347 Mbits/sec 0 341 KBytes [ 5] 8.00-9.00 sec 42.1 MBytes 353 Mbits/sec 0 472 KBytes [ 5] 9.00-10.00 sec 41.1 MBytes 345 Mbits/sec 0 510 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 414 MBytes 347 Mbits/sec 0 sender [ 5] 0.00-10.00 sec 412 MBytes 345 Mbits/sec receiver iperf Done.
When device is configure as DHCP client, the best available throughput:
iperf3 -c 192.168.42.212 Connecting to host 192.168.x.y, port 5201 [ 5] local 192.168.x.z port 44742 connected to 192.168.x.y port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 86.9 MBytes 729 Mbits/sec 0 1.68 MBytes [ 5] 1.00-2.00 sec 88.0 MBytes 738 Mbits/sec 10 1.17 MBytes [ 5] 2.00-3.00 sec 83.6 MBytes 702 Mbits/sec 0 1.41 MBytes [ 5] 3.00-4.00 sec 86.0 MBytes 721 Mbits/sec 0 1.43 MBytes [ 5] 4.00-5.00 sec 85.5 MBytes 717 Mbits/sec 0 1.52 MBytes [ 5] 5.00-6.00 sec 85.5 MBytes 717 Mbits/sec 26 1.18 MBytes [ 5] 6.00-7.00 sec 84.9 MBytes 712 Mbits/sec 0 1.20 MBytes [ 5] 7.00-8.00 sec 84.2 MBytes 707 Mbits/sec 0 1.28 MBytes [ 5] 8.00-9.00 sec 86.0 MBytes 721 Mbits/sec 0 1.30 MBytes [ 5] 9.00-10.00 sec 85.9 MBytes 720 Mbits/sec 0 1.32 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 856 MBytes 718 Mbits/sec 36 sender [ 5] 0.00-10.00 sec 852 MBytes 715 Mbits/sec receiver iperf Done.
Disk Performance
Test run on: OpenWrt 23.05.0 r23497-6637af95aa
Alternative tests: Here (newer kernel, SSD & HDD, MD RAID, higher performance)
Conclusion:
- Do not expect more that ~50MB/s write throughput
- Do not try to use anything involving crypt function, as far I know, there is no such support.
- When used with raid1 md array or LVM mirroring, write performance where sitting between 8~12MB/s
- Because of missing AES driver ? See: https://forum.openwrt.org/t/gnubee-personal-cloud-one/1871/14
Used spinning hardrives for test:
# smartctl -i /dev/sda smartctl 7.3 2022-02-28 r5338 [mips-linux-5.15.134] (localbuild) Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Device Model: WDC WD1600BJKT-75F4T0 Serial Number: REDACTED LU WWN Device Id: 5 0014ee 203bc4fc0 Firmware Version: 11.01A11 User Capacity: 160,041,885,696 bytes [160 GB] Sector Size: 512 bytes logical/physical Rotation Rate: 7200 rpm Device is: Not in smartctl database ATA Version is: ATA8-ACS (minor revision not indicated) SATA Version is: SATA 2.5, 3.0 Gb/s Local Time is: Sat Nov 18 13:37:25 2023 EST SMART support is: Available - device has SMART capability. SMART support is: Enabled # smartctl -i /dev/sdc smartctl 7.3 2022-02-28 r5338 [mips-linux-5.15.134] (localbuild) Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Device Model: ST4000LM024-2AN17V Serial Number: REDACTED LU WWN Device Id: 5 000c50 0a9a1dbdb Firmware Version: 0001 User Capacity: 4,000,787,030,016 bytes [4.00 TB] Sector Sizes: 512 bytes logical, 4096 bytes physical Rotation Rate: 5526 rpm Form Factor: 2.5 inches Device is: Not in smartctl database ATA Version is: ACS-3 T13/2161-D revision 5 SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s) Local Time is: Sat Nov 18 13:37:28 2023 EST SMART support is: Available - device has SMART capability. SMART support is: Enabled
Testing with hdparm:
# hdparm -tT /dev/sda /dev/sda: Timing cached reads: 270 MB in 2.00 seconds = 134.84 MB/sec Timing buffered disk reads: 230 MB in 3.00 seconds = 76.62 MB/sec # hdparm -tT /dev/sdc /dev/sdc: Timing cached reads: 286 MB in 2.01 seconds = 142.58 MB/sec Timing buffered disk reads: 198 MB in 3.01 seconds = 65.86 MB/sec
Tested with dd when on mounted ext4 filesystem:
# for i in /mnt/sda2 /mnt/sdc2; do time dd if=/dev/zero of=$i/TMP bs=100MB count=10 conv=sync ; ls -ahl $i/TMP; rm $i/TMP ; done 10+0 records in 10+0 records out real 0m 18.20s user 0m 0.00s sys 0m 17.85s -rw-r--r-- 1 root root 953.7M Nov 18 13:21 /mnt/sda2/TMP 10+0 records in 10+0 records out real 0m 17.99s user 0m 0.00s sys 0m 17.79s -rw-r--r-- 1 root root 953.7M Nov 18 13:21 /mnt/sdc2/TMP
TFTP Boot
An openwrt image can be booted via TFTP without being flashed, for example to test a snapshot or custom build.
You should have a TFTP server ready, for example:
wget -O /srv/tftp/GB-PCx_uboot.bin https://downloads.openwrt.org/snapshots/targets/ramips/mt7621/openwrt-ramips-mt7621-gnubee_gb-pc1-initramfs-kernel.bin ip a add 192.168.1.100/24 dev eth0 in.tftpd -vvv -4 -L -s /srv/tftp
On the serial console interrupt the normal boot process with the “1” key, this is the “Load system code to SDRAM via TFTP”.
Please choose the operation: 1: Load system code to SDRAM via TFTP. 2: Load system code then write to Flash via TFTP. 3: Boot system code via Flash (default). 4: Enter boot command line interface. 5: Load system code then write to Flash via USB Storage. 6: Load system code then write to Flash via Httpd. 9: Load U-Boot code then write to Flash via TFTP.
It will ask you if you want to change from the default TFTP boot parameters:
1: System Load Linux to SDRAM via TFTP. Please Input new ones /or Ctrl-C to discard Input device IP (192.168.1.1) ==:192.168.1.1 Input server IP (192.168.1.100) ==:192.168.1.100 Input Linux Kernel filename (GB-PCx_uboot.bin) ==:GB-PCx_uboot.bin
It will then dowload the image in RAM and run it:
NetTxPacket = 0x9BFB6C00 KSEG1ADDR(NetTxPacket) = 0xBBFB6C00 NetLoop,call eth_halt ! NetLoop,call eth_init ! Trying eth2 ETH_STATE_ACTIVE!! Using eth2 device TFTP from server 192.168.1.100; our IP address is 192.168.1.1 Filename 'GB-PCx_uboot.bin'. TIMEOUT_COUNT=10,Load address: 0x80a00000 Loading: Got ARP REPLY, set server/gtwy eth addr (98:f2:b3:c3:11:f0) Got it T ################################################################# [...] ################### done Bytes transferred = 6086802 (5ce092 hex) LoadAddr=80a00000 NetBootFileXferSize=005ce092 Automatic boot of image at addr 0x80A00000 ... ## Checking image at 80a00000 ... Image Name: MIPS OpenWrt Linux-6.6.45 Image Type: MIPS Linux Kernel Image (uncompressed) Data Size: 6086738 Bytes = 5.8 MB Load Address: 80001000 Entry Point: 80001000 Verifying Checksum ... OK OK No initrd ## Transferring control to Linux (at address 80001000) ... ## Giving linux memsize in MB, 512 Starting kernel ... OpenWrt kernel loader for MIPS based SoC Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org> Decompressing kernel... done! Starting kernel at 80001000... [ 0.000000] Linux version 6.6.45 (builder@buildhost) (mipsel-openwrt-linux-musl-gcc (OpenWrt GCC 13.3.0 r27140-ccc06f6716) 13.3.0, GNU ld (GNU Binutils) 2.42) #0 SMP Tue Aug 13 10:22:33 2024 [...]
And that's it.
Hardware
Info
Photos
Front:
Insert photo of front of the casing
Back:
Insert photo of back of the casing
Backside label:
Insert photo of backside label
Opening the case
Note: There is no case. The metal side sheets serve as both mounts and heatsink for the SATA drives. The sides are assembled with standard phillips (+) drive screws.
Serial
→ port.serial general information about the serial port, serial port cable, etc.
The GBPC1&2 comes with a serial Jack 2,5“ to USB adaptator. If you don't have the manufacturer adaptator, it should be possible to directly connect on the PCB with some manual tinkering.
Serial connection parameters for GnuBee Personal Cloud One | 57600, 8N1, 3.3V |
---|
On a standard linux distro, you can attach to serial at anytime:
screen /dev/ttyUSB0 57600
JTAG
→ port.jtag general information about the JTAG port, JTAG cable, etc.
How to connect to the JTAG Port of this specific device:
Insert photo of PCB with markings for JTAG port
Bootlogs
OEM bootlog
COPY HERE THE BOOTLOG WITH THE ORIGINAL FIRMWARE
OpenWrt bootlog
U-Boot 1.1.3 (Jul 9 2017 - 14:14:05)
Board: MediaTek APSoC DRAM: 512 MB
Config XHCI 40M PLL MediaTek SPI flash driver, SPI clock: 32MHz spi device id: ef 40 19 0 find flash: W25Q256FV
MediaTek U-Boot Version: 5.0.1.0-6
ASIC MT7621A DualCore (MAC to MT7530 Mode) DRAM_CONF_FROM: Auto-Detection DRAM_TYPE: DDR3 DRAM bus: 16 bit Xtal Mode=3 OCP Ratio=1/3 Flash component: SPI Flash Date:Jul 9 2017 Time:14:14:05
icache: sets:256, ways:4, linesz:32, total:32768 dcache: sets:256, ways:4, linesz:32, total:32768
#### The CPU freq = 900 MHZ #### estimate memory size = 512 Mbytes
Reset MT7530 set LAN/WAN WLLLL (Re)start USB... USB0: mtk-xhci: init hccr be1c0000 and hcor be1c0020 hc_length 32 Register 300010f NbrPorts 3 Starting the controller USB XHCI 0.96 scanning bus 0 for devices... 2 USB Device(s) found
scanning bus for storage devices... 0 Storage Device(s) found
No USB Storage found. Upgrade FW failed!
Please choose the operation:
1: Load system code to SDRAM via TFTP. 2: Load system code then write to Flash via TFTP. 3: Boot system code via Flash (default). 4: Enter boot command line interface. 5: Load system code then write to Flash via USB Storage. 6: Load system code then write to Flash via Httpd. 9: Load U-Boot code then write to Flash via TFTP. 0
3: System Boot system code via Flash. ## Checking image at bc050000 ...
Image Name: Linux-5.1.4+ Image Type: MIPS Linux Kernel Image (uncompressed) Data Size: 16852848 Bytes = 16.1 MB Load Address: 80001000 Entry Point: 8063b0c0 Verifying Checksum ... OK
OK No initrd
Notes
Space for additional notes, links to forum threads or other resources.
- ...