├── LICENSE ├── README.md └── assets ├── 4_pin_ATX_Power_Pins.png ├── Back_face_super6c.jpg ├── CM4_Jumpers.png ├── Frontal_face_super6c.jpg ├── LED_Definitions.png ├── Main Board Back IO.png ├── Main Board Top View IO.png ├── Mechanical Back View.png ├── Mechanical Top View.png ├── Power_btn_reset.png ├── Render_super6c.png ├── Render_super6c_02.png ├── Render_super6c_03.png ├── Render_super6c_04.png ├── Render_super6c_05.png ├── ansible_all_list_hosts.png ├── ansible_all_ping.png ├── ansible_config.png ├── ansible_inventory.png ├── ansible_ping_yaml.png ├── ansible_version.png ├── bash_ansible_env_setting.png ├── block_diagram.png ├── io_views.jpg ├── main_board.jpg ├── main_board_back_with_SSD.jpg ├── main_board_with_CM4.jpg ├── main_super6c.jpg ├── mechanical_drawing.png ├── mechanical_drawing02.png ├── note_J6.png ├── port_definitions.png ├── port_definitions02.png ├── support_software.png └── which_ansible.png /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 DeskPi Team 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DeskPi Super6C 2 | ## Description 3 | DeskPi Super6C is the Raspberry Pi cluster board a standard size mini-ITX board to be put in a case with up to 6 RPI CM4 Compute Modules. 4 | ![sudper6c](./assets/main_board.jpg) 5 | * Purchase URL: [ https://52pi.com/collections/new-arrivals/products/deskpi-super6c-raspberry-pi-cm4-cluster-mini-itx-board-kit-6-rpi-cm4-supported ] 6 | 7 | ## Super6C Story 8 | * Super6C stands for Super 6 pcs CM4 Computer module's Cluster. 9 | 10 | ## What Can Super6C do? 11 | * Learn, upskill, experiment on Raspberry Pi Cluster, and research DEV-OPS. 12 | * Build your Own home pi cluster 13 | * Build your home assisstant center 14 | * Build your Home NAS sharing service 15 | * Build your Self-Hosted Private Cloud 16 | * Host Your Own High-available Web Server cluster 17 | * Handle Heavy Loads calculation. 18 | * Fast multimedia conversion station 19 | * Build Your Own Supercomputer 20 | * Even build your Customized Super Router at home or company 21 | * Minecraft and other games server 22 | * CI/CD pipeline 23 | * Use a Raspberry Pi cluster for home automation 24 | * Build your own streaming server cluster at home 25 | * Build your own blender rendering server farm 26 | ## About IT management 27 | Use a Raspberry Pi cluster to learn Linux or learn how to handle a MySQL or Postgres database. 28 | Learn how to install an Apache server or how to do scripting in BASH, Python, and other scripting languages to make those cluster nodes interoperate. 29 | Learn programming, managing resources in Linux. Learn how to make and manage your own cloud service. 30 | 31 | A Raspberry Pi cluster also allows you to learn Docker, Kubernetes, Serverless. Or how to turn all the cluster nodes’ resources into one supercomputer with the help of simultaneous processing software like OpenMPI. 32 | Deploy Kubernetes and containers almost instantly to learn how to do the same when you’ll be employed in a large corporation. A Raspberry Pi cluster will keep you learning for years on end as Linux and cloud native are vast and interesting ecosystems. 33 | 34 | ## Features 35 | * Support plug-in 6PCS CM4 standard module 36 | * Stable power supply processing of separate DC-DC power supply inside each module 37 | * The modules on the board are interconnected through the gigabit switch chip RTL8370N 38 | * DC&ATX dual external power input ports DC priority higher than ATX if DC & ATX being plugged at the same time. 39 | * Full-speed gigabit external network interface*2 40 | * External network interface POE power pin *2 41 | * Standard HDIM video output interface of the main module*2 42 | * Main module MICRO USB2.0 master-slave device interface 43 | * Main module AF USB2.0 master-slave device interface*2 44 | * Main module pin USB2.0 master-slave device interface*2 45 | * Slave module MICRO USB2.0 master-slave device interface*5 46 | * All modules external module start indicator green*6 47 | * Module start indicator on the full module board Green LED*6 48 | * The network connection status indicator in the full module board Yellow LED*6 49 | * The network data communication indicator lamp in the full module board Green LED*6 50 | * Module power indicator on the board of all modules Red LED*6 51 | * DC12V fan interface *3 52 | * The total power switch button of the whole board 53 | * Total reset button for all modules 54 | * Mainboard external control indicator pin 55 | * Full module Micro SD card slot, used to support non-eMMC version of CM4 *6 56 | * Full module M.2 2280 M-KEY interface socket *6 57 | * Support PCIe device 58 | 59 | ### Specifications 60 | * 6 RPI CM4 supported 1 Gbps RJ45 x2 61 | * Onboard ON/OFF and Reset button 62 | * PC Case front panel header 63 | * 12V FAN Header x3 64 | * DC 19v~24V or ATX 12V 65 | * Mini ITX Case supported 66 | 67 | ### For every CM4: 68 | * M.2 2280 slot (PCIe Gen 2 x1) 69 | * TF Card slot 70 | * 5V FAN Header 71 | * Micro USB 2.0 72 | 73 | ### Only for 1st CM4: 74 | * USB Host A 2.0 x2 75 | * USB Host 2.54 4-pins x2 76 | * HDMI 2.0 x1 77 | * HDMI 1.4a x1 78 | * PACKAGE: 79 | * 1pcs Raspberry Pi CM4 Cluster Mini-ITX board. 80 | * 1pcs 100W Power supply. 81 | 82 |
 Note:  Raspberry Pi CM4 board are not included. 
83 | --- 84 | ## DIMENSION: 85 | * 170mm x 170mm x 21mm (Mini-ITX) 86 | 87 | ## COMMON APPLICATIONS 88 | * Self-hosted: Host cloud applications locally or at the edge Learning 89 | * Learning: Kubernetes, Docker, Serverless 90 | * Development: Build cloud-native and CI/CD for ARM edge infrastructure 91 | * Network-Attached Storage or Distributed Storage System :6 x ARM NAS node or CEPH node 92 | 93 | ## Block Scheme 94 | * Block diagram 95 | ![Block Scheme](./assets/block_diagram.png) 96 | 97 | ## Port Definitions 98 | * Port and functions on back 99 | 100 | ![Port_definitions](./assets/port_definitions.png) 101 | 102 | * Port and functions 103 | 104 | ![Port_definitions](./assets/port_definitions02.png) 105 | 106 | ### Pin Headers Definitions: 107 | * CM4 Jumpers Functions: 108 | 109 | ![CM4_Jumpers_functions](./assets/CM4_Jumpers.png) 110 | 111 | * LED Definitions: 112 | 113 | ![LED_definitions](./assets/LED_Definitions.png) 114 | 115 | * 4-Pin ATX Power Pins: 116 | 117 | ![4_pin_ATX_Power_Pins](./assets/4_pin_ATX_Power_Pins.png) 118 | 119 | * Power Button/Reset Button/Front I/O Pins: 120 | 121 | ![Power_btn_reset](./assets/Power_btn_reset.png) 122 | 123 | 124 |
Note:
125 | * J6: If you are using 9pin USB pins, it is more common for motherboards that support Pentium4 or athlon XP chipsets (such as i845D, i845E, SiS 650, etc.) to need to drop the pins. 126 | 127 | If a 10-pin type USB pin is used, such as i815, i815E, i815EP, KT133 and other chipset motherboards, this pin can be reserved, please refer to the motherboard manual for wiring. 128 | 129 | * J27: J27 Pin is the control programming interface for power management, which is directly used for internal production, DO NOT CONNECT!!! 130 | * J11/J13: PoE1/PoE2 Not available, DO NOT CONNECT!!! 131 | 132 | --- 133 | 134 | ## Software Supports 135 | Super6c supports Kubernetes software ecosystem, as well as machine learning and serverless stacks 136 | 137 | ![Support_OS](./assets/support_software.png) 138 | 139 | --- 140 | 141 | ## Product Outlook 142 | * Frontal 143 | 144 | ![Frontal](./assets/Frontal_face_super6c.jpg) 145 | 146 | * Bottom 147 | 148 | ![Bottom](./assets/Back_face_super6c.jpg) 149 | 150 | * IO View 151 | 152 | ![IO VIEW](./assets/io_views.jpg) 153 | 154 | ### Render Images 155 | 156 | ![45degree](./assets/Render_super6c.png) 157 | 158 | ![90degree](./assets/Render_super6c_02.png) 159 | 160 | ![360degree](./assets/Render_super6c_03.png) 161 | 162 | ![480degree](./assets/Render_super6c_04.png) 163 | 164 | ![180degree](./assets/Render_super6c_05.png) 165 | 166 | ### Mechanical Drawing 167 | * Unit: milimeter(mm) 168 | * PCB Thickness: 1.6mm 169 | 170 | ![Mechanical01](./assets/mechanical_drawing02.png) 171 | 172 | ![Mechanical02](./assets/mechanical_drawing.png) 173 | 174 | --- 175 | 176 | ## How to assemble 177 | * Attach the CM4 to the board by simply aligning it with the two connectors on the IO board, then give it a good squeeze. It’ll crunch into place and you should be set. 178 | 179 | ## How to build your own cluster and manage the cluster via ansible. 180 | 181 | ### Fit for CM4 Lite version 182 | > Note: The latest Raspberry Pi OS does not contain `pi` user and it may not 183 | > need to add `dtoverlay=dwc2,dr_mode=host` to config.txt file. 184 | 185 | * Assume you are using the old version (Raspberry Pi OS 2021-11-08) 186 | * CM4 Lite means Raspberry Pi Computer module come `without` a EMMC storage onboard. That means you need purchase MicroSD card(TF card). 187 | * Steps: 188 | 1. Download the latest Raspberry Pi OS 64bit image from: `https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2021-11-08/` 189 | 2. Unzip it and flash the `*.img` file to TF card by using `Etcher` tool, which can be downloaded via `https://www.balena.io/etcher/` 190 | 3. Modify `config.txt` file in TF card and adding `dtoverlay=dwc2,dr_mode=host` to it and save it. (Do not need to execute this step if your using the latest version) 191 |
 Before we unplug, now that your CM4 is fully flashed and ready to go, you’ll be surprised to learn that the USB Ports are disabled by default. Yes, really. Remember, this is a board designed to be embedded elsewhere and not for consumer-level off-the-shelf use.
192 | 
193 | In the “boot” folder, find the config.txt and add the following:
194 | 
195 | dtoverlay=dwc2,dr_mode=host
196 | 
197 | This will turn on the USB ports when you boot up, but if you accidentally keep the micro USB in, you will run into issues. Before you begin your first boot, make sure everything is unplugged. Boot and then plug in your mouse or keyboard.
198 | 
199 | If you’re like me and couldn’t get a wi-fi version, this is where you’ll plug in your dongle or ethernet cable.
200 | 
201 | 5. Create a new file named `ssh` on TF card `/boot` folder 202 | 6. Insert TF card into card slot on Super6C board. 203 | 7. Connect the power supply to DC Socket or Using ATX Power supply. (Max. 24V/6.15A) 204 | 8. Connect Full-sized HDMI cable to super6C, Other head connect to your TV or Monitor. 205 | 9. Connect Keyboard and mouse to USB2.0 port on board. 206 | 10. Connect Ethernet cable to `ETH1` to your Router. 207 | 11. Press `pwr buttom` to booting up the CM4. 208 | 12. Login to Raspberry Pi via username: `pi` password: `raspberry` 209 | 13. Make sure your OS can access internet. 210 | 14. Install `ansible` via following command: `pip3 install ansible --user` 211 | 15. Configure environment of PATH by editing `sudo nano /home/pi/.bashrc` 212 | 213 | ## How to install CM4 module 214 | Please press the CM4 module onto Super6c mainboard as following picture. 215 | Attach the CM4 to the board by simply aligning it with the two connectors on the IO board, then give it a good squeeze. It’ll crunch into place and you should be set. 216 | 217 | ![mainboard_with_CM4](./assets/main_board_with_CM4.jpg) 218 | 219 | and if you have SSD drive, install it as following picture. 220 | 221 | ![mainboard_with_SSD](./assets/main_board_back_with_SSD.jpg) 222 | 223 | ### How to Flash image to eMMC on CM4 module. 224 | * Flashing the Compute Module eMMC 225 | The Compute Module has an on-board eMMC device connected to the primary SD card interface. This guide explains how to write data to the eMMC storage using a Compute Module IO board. 226 | 227 | Please also read the section in the Compute Module Datasheets:[compute-module-datasheets-and-schematic](https://www.raspberrypi.com/documentation/computers/compute-module.html#datasheets-and-schematics) 228 | 229 | ### Compute Module 4 230 | 231 | Ensure the Compute Module is fitted correctly installed on the IO board. It should lie flat on the IO board. 232 | 233 | Make sure that `nRPBOOT` which is on `J2 (disable eMMC Boot)` on the IO board jumper is fitted 234 | 235 | Use a micro USB cable to connect the micro USB slave port `MCRO_USB` on IO board to the host device. 236 | 237 | ```Do not power up yet.``` 238 | 239 | ### For Windows Users 240 | Under Windows, an installer is available to install the required drivers and boot tool automatically. Alternatively, a user can compile and run it using Cygwin and/or install the drivers manually. 241 | 242 | * Windows Installer 243 | 244 | For those who just want to enable the Compute Module eMMC as a mass storage device under Windows, the stand-alone installer is the recommended option. This installer has been tested on Windows 10 32-bit and 64-bit, and Windows XP 32-bit. 245 | 246 | Please ensure you are not writing to any USB devices whilst the installer is running. 247 | 248 | Download and run the Windows installer to install the drivers and boot tool. 249 | 250 | * windows installer download URL: [rpiboot_setup.exe](https://github.com/raspberrypi/usbboot/raw/master/win32/rpiboot_setup.exe) 251 | 252 | Plug your host PC USB into the USB SLAVE port, making sure you have setup the board as described above. 253 | 254 | Apply power to the board; Windows should now find the hardware and install the driver. 255 | 256 | Once the driver installation is complete, run the RPiBoot.exe tool that was previously installed. 257 | 258 | After a few seconds, the Compute Module eMMC will pop up under Windows as a disk (USB mass storage device). 259 | 260 | ### Building rpiboot on your host system (Cygwin/Linux) 261 | 262 | We will be using Git to get the rpiboot source code, so ensure Git is installed. In Cygwin, use the Cygwin installer. On a Raspberry Pi or other Debian-based Linux machine, use the following command: 263 | 264 | ```bash 265 | sudo apt update 266 | sudo apt upgrade -y 267 | sudo apt install git 268 | ``` 269 | Git may produce an error if the date is not set correctly. On a Raspberry Pi, enter the following to correct this: 270 | ```bash 271 | sudo date MMDDhhmm 272 | ``` 273 | where MM is the month, DD is the date, and hh and mm are hours and minutes respectively. 274 | 275 | Clone the usbboot tool repository: 276 | 277 | ```bash 278 | git clone --depth=1 https://github.com/raspberrypi/usbboot 279 | cd usbboot 280 | ``` 281 | libusb must be installed. If you are using Cygwin, please make sure libusb is installed as previously described. On Raspberry Pi OS or other Debian-based Linux, enter the following command: 282 | ```bash 283 | sudo apt install libusb-1.0-0-dev 284 | ``` 285 | Now build and install the usbboot tool: 286 | ```bash 287 | make 288 | ``` 289 | Run the usbboot tool and it will wait for a connection: 290 | ```bash 291 | sudo ./rpiboot 292 | ``` 293 | Now plug the host machine into the Compute Module IO board USB slave port and power the CMIO board on. The rpiboot tool will discover the Compute Module and send boot code to allow access to the eMMC. 294 | 295 | ### For more information run 296 | ```bash 297 | ./rpiboot -h 298 | ``` 299 | 300 | ## Writing to the eMMC (Windows) 301 | 302 | After rpiboot completes, a new USB mass storage drive will appear in Windows. We recommend using Raspberry Pi Imager to write images to the drive. 303 | 304 | Make sure `J2 (nRPBOOT)` is set to the disabled position and/or nothing is plugged into the USB slave port. Power cycling the IO board should now result in the Compute Module booting from eMMC. 305 | 306 | ## Writing to the eMMC (Linux) 307 | 308 | After rpiboot completes, you will see a new device appear; this is commonly /dev/sda on a Raspberry Pi but it could be another location such as /dev/sdb, so check in /dev/ or run lsblk before running rpiboot so you can see what changes. 309 | 310 | You now need to write a raw OS image (such as Raspberry Pi OS) to the device. Note the following command may take some time to complete, depending on the size of the image: (Change /dev/sdX to the appropriate device.) 311 | 312 | ```bash 313 | sudo dd if=raw_os_image_of_your_choice.img of=/dev/sdX bs=4MiB 314 | ``` 315 | 316 | Once the image has been written, unplug and re-plug the USB; you should see two partitions appear (for Raspberry Pi OS) in /dev. In total, you should see something similar to this: 317 | 318 | ```bash 319 | /dev/sdX <- Device 320 | /dev/sdX1 <- First partition (FAT) 321 | /dev/sdX2 <- Second partition(Linux filesystem) 322 | ``` 323 | 324 | The /dev/sdX1 and /dev/sdX2 partitions can now be mounted normally. 325 | 326 | Make sure ` J2 (nRPBOOT)` is set to the disabled position and/or nothing is plugged into the USB slave port. Power cycling the IO board should now result in the Compute Module booting from eMMC. 327 | 这要有一张短接J2的图。 328 | 329 | ---- 330 | 331 | ## Compute Module 4 Bootloader 332 | 333 | The default bootloader configuration on CM4 is designed to support bring up and development on a Compute Module 4 IO board and the software version flashed at manufacture may be older than the latest release. 334 | 335 | * For final products please consider: 336 | 337 | * Selecting and verifying a specific bootloader release. The version in the usbboot repo is always a recent stable release. 338 | 339 | * Configuring the boot device (e.g. network boot). See BOOT_ORDER section in the bootloader configuration guide. 340 | 341 | * Enabling hardware write protection on the bootloader EEPROM to ensure that the bootloader can’t be modified on remote/inaccessible products. 342 | 343 | N.B. The Compute Module 4 ROM never runs recovery.bin from SD/EMMC and the rpi-eeprom-update service is not enabled by default. This is necessary because the EMMC is not removable and an invalid recovery.bin file would prevent the system from booting. This can be overridden and used with self-update mode where the bootloader can be updated from USB MSD or Network boot. However, self-update mode is not an atomic update and therefore not safe in the event of a power failure whilst the EEPROM was being updated. 344 | 345 | ## Modifying the bootloader configuration 346 | 347 | * To modify the CM4 bootloader configuration: 348 | 349 | ```bash 350 | cd usbboot/recovery 351 | ``` 352 | 353 | Replace `pieeprom.original.bin` if a specific bootloader release is required. 354 | 355 | Edit the default boot.conf bootloader configuration file. Typically, at least the BOOT_ORDER must be updated: 356 | 357 | * For network boot BOOT_ORDER=0xf2 358 | 359 | * For SD/EMMC boot BOOT_ORDER=0xf1 360 | 361 | * For USB boot failing over to EMMC BOOT_ORDER=0xf15 362 | 363 | Run `./update-pieeprom.sh ` to update the EEPROM image pieeprom.bin image file. 364 | 365 | If EEPROM write protection is required then edit config.txt and add `eeprom_write_protect=1`. Hardware write-protection must be enabled via software and then locked by pulling the `EEPROM_nWP` pin `low`. 366 | 367 | Run `../rpiboot -d . ` to update the bootloader using the updated EEPROM image pieeprom.bin 368 | 369 | The pieeprom.bin file is now ready to be flashed to the Compute Module 4. 370 | 371 | ## Flashing the bootloader EEPROM - Compute Module 4 372 | 373 | To flash the bootloader EEPROM follow the same hardware setup as for flashing the EMMC but also ensure EEPROM_nWP is NOT pulled low. Once complete `EEPROM_nWP` may be pulled low again. 374 | 375 | ```bash 376 | # Writes recovery/pieeprom.bin to the bootloader EEPROM. 377 | ./rpiboot -d recovery 378 | ``` 379 | 380 | ## Troubleshooting 381 | 382 | For a small percentage of Raspberry Pi Compute Module 3s, booting problems have been reported. We have traced these back to the method used to create the FAT32 partition; we believe the problem is due to a difference in timing between the BCM2835/6/7 and the newer eMMC devices. The following method of creating the partition is a reliable solution in our hands. 383 | 384 | ```bash 385 | sudo parted /dev/ 386 | (parted) mkpart primary fat32 4MiB 64MiB 387 | (parted) q 388 | sudo mkfs.vfat -F32 /dev/ 389 | sudo cp -r /* 390 | ``` 391 | 392 | After Flash Raspberry Pi OS to eMMC on CM4 module, just power off the system, and one complete, 5 to go, just repeat those step five times. 393 | 394 | If your CM4 Module does not have eMMC on board, that will be easy, just flash Raspberry Pi OS to TF card or SSD drive, and insert them to card slot, fix it with screws. and connect the power supply, and press `PWR_BTN` button to power them on. 395 | 396 | If your CM4 module has eMMC on board, the SSD drive and TF card can be external mass storage. 397 | 398 | ![mainboard_with_SSD](./assets/main_board_back_with_SSD.jpg) 399 | 400 | 401 | ## APPLICATION DEMO 402 | 403 | ### How to build your own cluster and manage the cluster via Ansible 404 | 405 | * Assume you are using the old version (Raspberry Pi OS 2021-11-08) 406 | * CM4 Lite means Raspberry Pi Computer module come without a EMMC storage onboard. (That means you need purchase MicroSD card(TF card) additional.) 407 | * Please Download the latest Raspberry Pi OS 64bit image from: [raspios_arm64-2021-11-08](https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2021-11-08/) 408 | 409 | * Unzip it and flash the *.img file to TF card by using Etcher tool, which can be downloaded via [etcher](https://www.balena.io/etcher/) 410 | 411 | * Modify config.txt file in TF card and adding dtoverlay=dwc2,dr_mode=host to it and save it. (Do not need to execute this step if your using the latest version) 412 | 413 | Now that your CM4 is fully flashed and ready to go, you’ll be surprised to learn that the USB Ports are disabled by default. 414 | 415 | In the “boot” folder, find the config.txt and add the following: 416 | ```bash 417 | dtoverlay=dwc2,dr_mode=host 418 | ``` 419 | This will turn on the USB ports when you boot up, but if you accidentally keep the micro USB in, you will run into issues. Before you begin your first boot, make sure everything is unplugged. Boot and then plug in your mouse or keyboard. 420 | 421 | If you’re like me and couldn’t get a wi-fi version, this is where you’ll plug in your dongle or ethernet cable. 422 | 423 | * Create a new file named ssh on TF card /boot folder, and then insert TF card into card slot on Super6C board. 424 | 425 | * Connect the power supply to DC Socket or Using ATX Power supply. (Max. 24V/6.15A) 426 | 427 | * Connect Full-sized HDMI cable to super6C, Other head connect to your TV or Monitor. 428 | 429 | * Connect Keyboard and mouse to USB2.0 port on board. 430 | 431 | * Connect Ethernet cable to ETH1 to your Router. 432 | 433 | * Press PWR_BTN buttom to booting up the all of CM4s. 434 | 435 | * Login to Raspberry Pi via username: pi password: raspberry 436 | 437 | * Make sure your OS can access internet. 438 | 439 | ### Deploy ansible environments as following steps 440 | 441 | If you want to use Ansible to manage Raspberry Pi cluster, you need to upgrade python version from 3.7 to 3.8 as following steps: 442 | 443 | * Remove old version python 444 | ```bash 445 | sudo apt remove ansible 446 | sudo apt purge –y python2.7-minimal 447 | ``` 448 | * Update and upgrade system. 449 | ```bash 450 | sudo apt update 451 | sudo apt upgrade –y 452 | ``` 453 | * Install dependencies. 454 | ```bash 455 | sudo apt-get install -y build-essential tk-dev libncurses5-dev \ 456 | libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev \ 457 | libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev 458 | ``` 459 | * Download source code and compile it. 460 | ```bash 461 | version=3.8.5 462 | wget https://www.python.org/ftp/python/$version/Python-$version.tgz 463 | tar zxf Python-$version.tgz 464 | cd Python-$version 465 | ./configure --enable-optimizations 466 | make -j4 467 | sudo make altinstall 468 | ``` 469 | 470 | ```Do remember: Installs Python into /usr/local/bin``` 471 | 472 | * Install ansible 473 | We can use apt or your particular distro package manager, but doing that, we risk no getting the latest version available. 474 | In some cases, I have to agree that is good idea, we make sure system is kept stable and the packages has been tested enough, but in technologies like Ansible, which is still changing so rapidly, I recommend you to go ahead in your tests and get the latest version, that way you will also learn to use those latest versions, which have some modules usage differences. 475 | Lets see the version installed using apt in Raspbian. 476 | ```bash 477 | sudo apt list ansible 478 | pip3 install ansible --user 479 | ``` 480 |
Installing Ansible using the --user option, will make that the binary will be available directly under your user home, and not in your root bin directory (/bin,/usr/bin..)
481 | 482 | ![which_ansible](./assets/which_ansible.png) 483 | 484 | For that, I recommend you to add your `$user_home/.local/bin` to your PATH environment: 485 | 486 | ![bash_ansible_env_setting](./assets/bash_ansible_env_setting.png) 487 | 488 | ### Ansible Project Configuration 489 | 490 | Now that we have Ansible installed, let’s set some basic configuration. 491 | 492 | Create a directory for our first project where we are going to set the different configuration files and Ansible playbooks 493 | ```bash 494 | mkdir Ansible 495 | ``` 496 | First file we are going to create, is an Ansible configuration file. This will make sure we are using correct inventory file and some specific options for this project. 497 | In this case, we will use the inventory file in the local directory and will be connecting to the remote server as root. Additionally, will disable ssh-key check so we can connect to the servers without doing first ssh-key handshake (is a security risk, but will help us to destroy and deploy containers and VMs more rapidly in the future) 498 | 499 | ![ansible_config](./assets/ansible_config.png) 500 | Using `--version` attribute, will allow us to make sure we are suing correct configuration file: 501 | 502 | ![ansible_version](./assets/ansible_version.png) 503 | 504 | ### Create the inventory file with the list of hosts 505 | 506 | ![ansible_inventory](./assets/ansible_inventory.png) 507 | 508 | We can list all the hosts from our inventory: 509 | 510 | ![ansible_all_list_hosts](./assets/ansible_all_list_hosts.png) 511 | 512 | If we try the command ansible ping we will have errors, since we can not actually connect to our servers using SSH public keys. 513 | ```bash 514 | ansible all –m ping 515 | ``` 516 | ![ansible_all_ping](./assets/ansible_all_ping.png) 517 | 518 | and before that, we need to create a file called ping.yml. 519 | 520 | ![ansible_ping_yaml](./assets/ansible_ping_yaml.png) 521 | 522 | More information please refer to [ansible](https://www.ansible.com/resources/get-started) 523 | 524 | --- 525 | ### FAQ 526 | * What can I do with Super6C ? 527 | > Home server (homelab) and cloud apps hosting. 528 | > Learn Kubernetes, Docker Swarm, Serverless, Microservices on bare metal 529 | > Cloud-native apps testing environment 530 | > Learn concepts of distributed Machine Learning apps 531 | > Prototype and learn cluster applications, parallel computing, and distributed computing concepts 532 | > Host K8S, K3S, Minecraft, Plex, Owncloud, Nextcloud, Seafile, Minio, Tensorflow 533 | 534 | * Which Raspberry Pi models are compatible ? 535 | > Super6C supports all Raspberry Pi CM4 with and without eMMC. 536 | 537 | * Does Raspberry Pi include compute modules ? 538 | > No, the product only have cluster motherboard and power adapter. 539 | 540 | * From where Super6C boots OS ? 541 | > You can boot the OS from eMMC, SD Card, netboot, USB or NVMe. 542 | 543 | * Does each node get its own IP address? 544 | > Yes 545 | 546 | * How the compute modelues communicate with each other ? 547 | > The nodes interconnected with the onboard 1 Gbps switch. And, each node has 1Gbps speed. 548 | 549 | * Do all the slots need to be filled in ? 550 | > The cluster works with any amount of nodes. You can start with a couple of nodes and scale when needed. 551 | 552 | * Can I flash compute modules through the board ? 553 | > Yes, you can flash a compute module using a Micro USB cable. 554 | 555 | * How do the NIC, Ethernet, USB, HDMI, and audio ports work ? 556 | > There are 2 USB-A an 2 USB 2.54 Pins on the board.They only connect to CM4 1$. The two HDMI ports are also the same. 557 | > NIC – There is an 8-port gigabit switch on the board. 558 | > Each port goes to each node plus one uplink. 559 | > Two RJ45 out are from the switch. 560 | > You can use them connect to other network device without extern switch. 561 | 562 | * Can Super6C function from either an ATX power supply 12V ? 563 | > Yes. 564 | 565 | * Can I use this cluster io expansion board to just running my MySQL server? 566 | > Yes, you can running not only MySQL server but also PostgresSQL, SQLite, 567 | > Mongo DB and so on. 568 | 569 | --- 570 | 571 | -------------------------------------------------------------------------------- /assets/4_pin_ATX_Power_Pins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/4_pin_ATX_Power_Pins.png -------------------------------------------------------------------------------- /assets/Back_face_super6c.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/Back_face_super6c.jpg -------------------------------------------------------------------------------- /assets/CM4_Jumpers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/CM4_Jumpers.png -------------------------------------------------------------------------------- /assets/Frontal_face_super6c.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/Frontal_face_super6c.jpg -------------------------------------------------------------------------------- /assets/LED_Definitions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/LED_Definitions.png -------------------------------------------------------------------------------- /assets/Main Board Back IO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/Main Board Back IO.png -------------------------------------------------------------------------------- /assets/Main Board Top View IO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/Main Board Top View IO.png -------------------------------------------------------------------------------- /assets/Mechanical Back View.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/Mechanical Back View.png -------------------------------------------------------------------------------- /assets/Mechanical Top View.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/Mechanical Top View.png -------------------------------------------------------------------------------- /assets/Power_btn_reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/Power_btn_reset.png -------------------------------------------------------------------------------- /assets/Render_super6c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/Render_super6c.png -------------------------------------------------------------------------------- /assets/Render_super6c_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/Render_super6c_02.png -------------------------------------------------------------------------------- /assets/Render_super6c_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/Render_super6c_03.png -------------------------------------------------------------------------------- /assets/Render_super6c_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/Render_super6c_04.png -------------------------------------------------------------------------------- /assets/Render_super6c_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/Render_super6c_05.png -------------------------------------------------------------------------------- /assets/ansible_all_list_hosts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/ansible_all_list_hosts.png -------------------------------------------------------------------------------- /assets/ansible_all_ping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/ansible_all_ping.png -------------------------------------------------------------------------------- /assets/ansible_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/ansible_config.png -------------------------------------------------------------------------------- /assets/ansible_inventory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/ansible_inventory.png -------------------------------------------------------------------------------- /assets/ansible_ping_yaml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/ansible_ping_yaml.png -------------------------------------------------------------------------------- /assets/ansible_version.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/ansible_version.png -------------------------------------------------------------------------------- /assets/bash_ansible_env_setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/bash_ansible_env_setting.png -------------------------------------------------------------------------------- /assets/block_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/block_diagram.png -------------------------------------------------------------------------------- /assets/io_views.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/io_views.jpg -------------------------------------------------------------------------------- /assets/main_board.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/main_board.jpg -------------------------------------------------------------------------------- /assets/main_board_back_with_SSD.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/main_board_back_with_SSD.jpg -------------------------------------------------------------------------------- /assets/main_board_with_CM4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/main_board_with_CM4.jpg -------------------------------------------------------------------------------- /assets/main_super6c.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/main_super6c.jpg -------------------------------------------------------------------------------- /assets/mechanical_drawing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/mechanical_drawing.png -------------------------------------------------------------------------------- /assets/mechanical_drawing02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/mechanical_drawing02.png -------------------------------------------------------------------------------- /assets/note_J6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/note_J6.png -------------------------------------------------------------------------------- /assets/port_definitions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/port_definitions.png -------------------------------------------------------------------------------- /assets/port_definitions02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/port_definitions02.png -------------------------------------------------------------------------------- /assets/support_software.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/support_software.png -------------------------------------------------------------------------------- /assets/which_ansible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DeskPi-Team/super6c/07c0c141f5f17159d0db26f7e289d5c52ff7c7a0/assets/which_ansible.png --------------------------------------------------------------------------------