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

GnuBee Personal Cloud 1

Install OpenWrt (generic explanation)

You will need to follow the initial installation procedure described below if you install openwrt for the first time.

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

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
  • 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/

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

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

generic.flashing.tftp

This seems possible via the bootloader, but not tested yet.

generic.sysupgrade

Official procedure from existing OpenWRT variants: https://github.com/gnubee-git/GnuBee_Docs/wiki/Install-OpenWRT

  • 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

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

generic.debrick

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

Basic configuration After flashing, proceed with this.
Set up your Internet connection, configure wireless, configure USB port, etc.

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'

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.

By default, both ethernet ports configuration is bridged on br-lan:

Port Switch port
LAN 1 ethblue
LAN 2 ethblack

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

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.

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.

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

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

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.

Front:
Insert photo of front of the casing

Back:
Insert photo of back of the casing

Backside label:
Insert photo of backside label

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.

Main PCB:
Insert photo of PCB GnuBee Personal Cloud 1 PCB top GnuBee Personal Cloud 1 PCB bottom

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

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

COPY HERE THE BOOTLOG WITH THE ORIGINAL FIRMWARE


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


Space for additional notes, links to forum threads or other resources.

  • ...
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/09/08 14:22
  • by vincele