Cloudshell-2
The CloudShell2 for the ODROID-XU4 is an affordable DIY Network Attached Storage (NAS) Solution with RAID support.
It offers dual slots for 3.5” HDD/SSD drives with very fast UAS(USB Attached SCSI) feature to archive over 300 MB/sec transfer speed.
Like the original CloudShell, it includes a color LCD and IR receiver on the front,
but adds support for UAS and useful data storage technologies (RAID-0, RAID-1 and SPAN).
CloudShell2 must run Kernel 4.9 based image to utilize the UASP features.
Other old Kernel version doesn't support it on XU4.
Kernel version must be higher than 4.9.20-24
Specifications
Storage
- 2 Drive Bays
- Supported size : 3.5“ SATA HDD
Supported RAID Type
- Basic(PM)
- SPAN
- RAID 0
- RAID 1
Appearance
- Color: Clear, Smoky Blue
- Size (Height x Width x Depth): 140 mm x 110 mm x 221.5 mm
- Weight: 0.64kg(without HDD)
Others
- Cooling Fan: 92mm x 92mm x 25mm, 5Volt, 2500rpm. Pin#1:GND, Pin#2:5V, Pin#3:NC
- IR Receiver (remote controller not included)
- 2.8” 320×240 TFT LCD
- 15V/4A Power Input
Improvements over the original CloudShell (UAS and RAID)
One of the key features of cloudshell-2 is USB-Attached SCSI (UAS). UAS is a new computer protocol used to move data to and from USB storage devices. UAS depends on the USB protocol, and uses the standard SCSI command set. UAS provides faster transfers compared to previous USB Storage protocols, which is called Bulk-Only Transport (BOT). UAS was introduced as part of the USB 3.0 standard, but can also be used with devices complying with the slower USB 2.0 standard, assuming compatible hardware, firmware and drivers [1].
Another important feature of the cloudshell-2 is Redundant Array of Independent Disks (RAID). RAID is a data storage virtualization technology that combines multiple physical disk drive components into a single logical unit for the purposes of data redundancy, performance improvement, or both. Data is distributed across the drives in one of several ways, referred to as RAID levels, depending on the required level of redundancy and performance. The different schemes, or data distribution layouts, are named by the word RAID followed by a number, for example, RAID 0 or RAID 1. Each schema, or RAID level, provides a different balance among the key goals: reliability, availability, performance, and capacity. RAID levels greater than RAID 0 provide protection against unrecoverable sector read errors, as well as against failures of whole physical drives [2]. cloudshell-2 supports both RAID 0 and RAID 1.
cloudshell-2 also offers JBOD (Just a Bunch of Disks) as well as RAID. JBOD generally refers to a collection of hard disks that have not been configured to act as a redundant array of independent disks (RAID) array. Rather than configuring a storage array to use a RAID level, the disks within the array are either spanned or treated as independent disks. A spanning configuration uses a technique called concatenation to combine the capacity of all of the disks into a single, large logical disk [3]. cloudshell-2 provides both spanning and independent disk modes as SPAN and PM mode.
Hardware
Hardware Block Diagram
Easy installations
0. Hardware assembling
CloudShell2 Assembly Video by user @BaldNerd
1. Install minimal Ubuntu image to run Cloudshell2
2. Set the RAID mode
There are four data storage modes on the CloudShell2: RAID 0, RAID 1, SPAN and PM. This means that the hard disks will be detected separately in PM mode.
To select the RAID mode, set the RAID Mode DIP Switch to the setting that you want, then apply power while pressing the RAID Setup Key button until booting is complete.
3. Enable LCD and Fan
- Don't forget to reboot the system after the configurations.
- Operation confirmed on Ubuntu 18.04 and 20.04.
Add Hardkernel PPA to your XU4. It will not be necessary if you use Ubuntu 20.04 or above.
- target
sudo apt-get install software-properties-common sudo add-apt-repository ppa:hardkernel/ppa sudo apt update
If the repository is added successfully then you can install the packages by using apt command.
- target
sudo apt install cloudshell-lcd cloudshell2-fan sudo reboot
- In Ubuntu version above 20.04 with kernel 5.4, you have to modify file /media/boot/config.ini the DTBO settings like this.
; Device Tree Overlay overlay_resize=16384 overlay_profile=hktft_cs_ogst overlays="spi0 i2c0 i2c1 uart0" [overlay_hktft_cs_ogst] overlays="hktft-cs-ogst i2c0"
You can see the source codes of these scripts.
- cloudshell-lcd: https://github.com/hardkernel/cloudshell-lcd
- cloudshell2-fan: https://github.com/hardkernel/cloudshell2-fan
This is another LCD script to show with RAID information by @goonieg at External Link
If you want to make your cloudShell2 like that, check this follow the link.
How to check your disk failed
4. Configure the IR Sensor
Use the automated tool to configure it. (Github Project page)
You should check your Ubuntu version. And then, download the script for your Ubuntu version.
- target
lsb_release -r
Ubuntu 18.04
- target
wget https://raw.githubusercontent.com/hardkernel/cloudshell_ir/bionic/install_ir.sh chmod +x install_ir.sh sudo ./install_ir.sh sudo reboot
Ubuntu 16.04
- target
wget https://raw.githubusercontent.com/hardkernel/cloudshell_ir/master/install_ir.sh chmod +x install_ir.sh sudo ./install_ir.sh sudo reboot
5. Disable the LCD script
If you want to disable the LCD script, then you should run following command.
- target
sudo apt-get remove cloudshell-lcd
6. Turn the Fan off/on
You can turn the fan off with following command.
- target
sudo i2cset -y 0 0x60 0x05 0xf5
Turn it on again.
- target
sudo i2cset -y 0 0x60 0x05 0xf0
If you want to disable the fan always, remove the cloudshell2-fan package.
- target
sudo apt-get remove cloudshell2-fan sudo reboot
7. Turn off the LCD screen at night (PM 10:00 to AM 8:00 in the example)
Let me introduce @crazyquark's good idea at our forum Turn off the LCD screen at night
I simply quoted the post here. Very thanks @crazyquark.
I wrote 2 small scripts to turn off the LCD at night because well, light pollution sucks. I instrument it using crontab as such:
0 8 * * * /path/to/lcd_on.sh 0 22 * * * /path/to/lcd_off.sh
The ON script is:
#!/bin/bash echo 0 > /sys/class/backlight/*/bl_power
And the OFF script is:
#!/bin/bash echo 1 > /sys/class/backlight/*/bl_power
You can combine the 2 in one script and pass 0 or 1 as a param but I was too lazy.