# CB1
**Repository Path**: ghosthack/CB1
## Basic Information
- **Project Name**: CB1
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-03-15
- **Last Updated**: 2024-03-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# SSH
login as: biqu
password: biqu
# OS image
* The latest system image is [here](https://github.com/bigtreetech/CB1/releases)
* The source code is [here](https://github.com/bigtreetech/CB1-Kernel)
# V2.3.4 OS Setting
## WIFI Settings
* After the OS writes to the SD card, there is a FAT32 partition named `BOOT`, open `system.cfg` file with `Notpad`, `Notpad++` or `VSCode`.

* Set `WIFI_SSID` as your actual wifi name and `WIFI_PASSWD` as your actual wifi password, The space character can be parsed normally without additional escape character.
For example: `WIFI_SSID="CB1 Tester"`

## Overlays Settings
* After the OS writes to the SD card, there is a FAT32 partition named `BOOT`, open `BoardEnv.txt` file with `Notpad`, `Notpad++` or `VSCode`.

* Set as required as shown in the figure below.
* set `fdtfile` to `sun50i-h616-biqu-emmc` for CB1 eMMC version, set `fdtfile` to `sun50i-h616-biqu-sd` (default value) for CB1 normal version
* The default value is `console=display`, This means that the `UART0` of CB1 is used as the debugging port by default. We can use `MobaXterm` to connect to CB1 by UART0 and debug. If klipper wants to use `UART0` to control the motherboard, we need to set it to `console=serial`, now klippe can use `UART0` as `/dev/ttyS0`.
* CB1 will automatically identify the HDMI resolution, but if your HDMI screen cannot report the resolution through the EDID normally, we can forcibly specify the resolution of CB1 output by uncomment `extraargs=video` and set the actual resolution.
For example:
BTT-HDMI7 resolution = 1024x600: `extraargs=video=HDMI-A-1:1024x600-24@60`
BTT-HDMI5 resolution = 800x480: `extraargs=video=HDMI-A-1:800x480-24@60`
* Uncomment `overlays=tft35_spi` to enable TFT35 SPI screen, uncomment `param_tft35_spi_rotate=xx`(0, 90, 180, 270) to set TFT35 SPI rotation angle, we may also need to set `ks_angle` in `system.cfg` to set touch rotation to match the display of TFT35.
* Uncomment `overlays=mcp2515` to enable MCP2515 spi to canbus module (Theoretically, it can be multiplexed with `tft35_spi` and 'spidev1.2' at the same time, but `mcp2515` needs strong real-time, it is better not to enable other SPI1 features when using `mcp2515`).
* uncomment `overlays=i2c0` to release '/dev/i2c-0' to user space for `BTT Pi` / `CB1 eMMC`, The list of i2c device is as follows:
* Before uncomment, the system has 3 built-in i2c devices:
* `/dev/i2c-0`: twi3(PA10/PA11) for the H616 built-in Ethernet PHY device (ac200/ac300).
* `/dev/i2c-1`: for PMU axp313a.
* `/dev/i2c-2`: for HDMI's i2c.
* After uncomment, 1 user space i2c + 3 built-in i2c:
* `/dev/i2c-0`: user space i2c0(PI5/PI6).
* `/dev/i2c-1`: twi3(PA10/PA11) for the H616 built-in Ethernet PHY device (ac200/ac300).
* `/dev/i2c-2`: for PMU axp313a.
* `/dev/i2c-3`: for HDMI's i2c.
* uncomment `overlays=spidev1_2` to release 'spidev1.2' to user space (For example: adxl345), `spidev1.0` is used by `MCP2515`, `spidev1.1` is used by `tft35_spi`.
* uncomment `#param_gpio_shutdown_pin=PC7` and `#param_gpio_shutdown_level=0` for GPIO triggers system shutdown feature, `#param_gpio_shutdown_pin` is the GPIO used for detection, `#param_gpio_shutdown_level` is the triggering level, `0` means the falling edge is triggered, and `1` means the rising edge is triggered.

* NOTE: TFT35 SPI and MCP2515 multiplex a group of SPI1
```
SPI1_CLK=PH6
SPI1_MISO=PH8
SPI1_MOSI=PH7
TFT35_SPI_CS=PC7
MCP2515_CS=PC11
MCP2515_IRQ=PC9
```
## Custom logo
Refer to [here](https://github.com/bigtreetech/armbian-bootlogo)
# CB1 eMMC Version
__NOTE: The CB1 eMMC version can also use the SD card as the OS image source, and the priority of the SD card is higher than on-board eMMC, so when using the eMMC, remember not to insert the OS SD card__
1. Download the utility [sunxi-fel](https://github.com/bigtreetech/sunxi-tools) to your computer (Mac OS is not supported) and download the CB1 [driver](https://github.com/bigtreetech/sunxi-tools/raw/master/u-boot-sunxi-cb1-emmc.bin)
For windows download [sunxi-fel.exe](https://github.com/bigtreetech/sunxi-tools/raw/master/sunxi-fel.exe)
For linux download [sunxi-fel-aarch64](https://github.com/bigtreetech/sunxi-tools/raw/master/sunxi-fel-aarch64)
For arm download [sunxi-fel-armhf](https://github.com/bigtreetech/sunxi-tools/raw/master/sunxi-fel-armhf)
2. Push the DIP switch (USB OTG) and (RPI BOOT) to ON to enter BOOT mode.
As shown in the following figure is for PI4B_Adapter.
For other motherboards, refer to the CM4 eMMC part of the motherboard manual to set the switch.
For some motherboards (e.g. Manta-E3EZ, Manta-M8P-V1.1, Manta-M5P) with OTG/UART selector switch for Type-C, we also need to set the switch to OTG mode according to motherboard's manual 
3. USB driver for windows (Linux skip this step): refer to the official website of [AllWinner](https://linux-sunxi.org/FEL/USBBoot#Using_sunxi-fel_on_Windows)
* Download [Zadig](https://zadig.akeo.ie/) to the rescue
* Enable `Options->List All Devices` 
* Select the USB device to install the driver(most likely will be "unknown"). Make sure the device USB ID is "1F3A:EFE8"). Click `Install Driver` after confirming that the information is correct 
4. Open the `Powershell`(windows) or `console terminal`(linux) where you downloaded the sunxi-fel tools and CB1 driver in step 1.
5. Run
`.\sunxi-fel.exe -v ver` (windows)
`sudo ./sunxi-fel-armhf -v ver` (linux-armhf)
`sudo ./sunxi-fel-aarch64 -v ver` (linux-aarch64)
to check whether the USB of CB1 is connected normally.
If you get `ERROR: Allwinner USB FEL device not found!` means that the USB is not recognized. Please recheck whether the driver is installed successfully.
If you get `AWUSBFEX soc=00001823(H616)` means that CB1 eMMC is ready.
Here on the first line is an example of error you will see if the driver did not install correctly.
On the second line is an example of what it will look like after zadig has installed the driver correctly.

6. Run
`.\sunxi-fel.exe uboot .\u-boot-sunxi-cb1-emmc.bin` (windows)
`sudo ./sunxi-fel-armhf uboot ./u-boot-sunxi-cb1-emmc.bin` (linux-armhf)
`sudo ./sunxi-fel-aarch64 uboot ./u-boot-sunxi-cb1-emmc.bin` (linux-aarch64)
to write u-boot to CB1
7. When the uboot is written, the computer will recognize a USB flash disk, and then you can use `balenaEtcher` or `Raspberry Pi Imager` to write the OS image to eMMC. The steps are the same as the SD card version.
8. Refor to [Overlays Settings](https://github.com/bigtreetech/CB1#overlays-settings) to set `fdtfile` to `sun50i-h616-biqu-emmc`
# 40 Pin GPIO
| Pin | BTT Pi | CB1 eMMC | CB1 | CM4 | CM4 | CB1 | CB1 eMMC | BTT Pi | Pin | ||||||||
| Signal | Description | Signal | Description | Signal | Description | Signal | Description | Signal | Description | Signal | Description | Signal | Description | Signal | Description | ||
| 1 | 3.3V | 3.3V | 3.3V | 3.3V | 5V | 5V | 5V | 5V | 2 | ||||||||
| 3 | PC3 | GPIO67 | NC | NC | GPIO2 | I2C1 SDA | 5V | 5V | 5V | 5V | 4 | ||||||
| 5 | PC0 | GPIO64 | NC | NC | GPIO3 | I2C1 SCL | GND | GND | GND | GND | 6 | ||||||
| 7 | PC7 | GPIO71 | PI14 | GPIO270 | PC7 | GPIO71 | GPIO4 | GPCLK0 | GPIO14 | UART TX | PH0 | GPIO224, UART0_TX | PH0 | GPIO224, UART0_TX | PH0 | GPIO224, UART0_TX | 8 |
| 9 | GND | GND | GND | GND | GPIO15 | UART RX | PH1 | GPIO225, UART0_RX | PH1 | GPIO225, UART0_RX | PH1 | GPIO225, UART0_RX | 10 | ||||
| 11 | PC14 | GPIO78 | PI15 | GPIO271 | PC14 | GPIO78 | GPIO17 | SPI1 CE1 | GPIO18 | PCM CLK | PC13 | GPIO77 | PI7 | GPIO263 | PC13 | GPIO77 | 12 |
| 13 | PC12 | GPIO76 | PI6 | GPIO262 | PC12 | GPIO76 | GPIO27 |
|
GND | GND | GND | GND | 14 | ||||
| 15 | PC10 | GPIO74 | PI4 | GPIO260 | PC10 | GPIO74 | GPIO22 |
|
GPIO23 |
|
PC11 | GPIO75 | PI5 | GPIO261 | PC11 | GPIO75 | 16 |
| 17 | 3.3V | 3.3V | 3.3V | 3.3V | GPIO24 |
|
PC9 | GPIO73 | PI3 | GPIO259 | PC9 | GPIO73 | 18 | ||||
| 19 | PH7 | GPIO231, SPI1_MOSI | PH7 | GPIO231, SPI1_MOSI | PH7 | GPIO231, SPI1_MOSI | GPIO10 | SPI0 MOSI | GND | GND | GND | GND | 20 | ||||
| 21 | PH8 | GPIO232, SPI1_MISO | PH8 | GPIO232, SPI1_MISO | PH8 | GPIO232, SPI1_MISO | GPIO9 | SPI0 MISO | GPIO25 |
|
NC | NC | PG13 | GPIO205 | 22 | ||
| 23 | PH6 | GPIO230, SPI1_CLK | PH6 | GPIO230, SPI1_CLK | PH6 | GPIO230, SPI1_CLK | GPIO11 | SPI0 SCLK | GPIO8 | SPI0 CE0 | NC | NC | PG12 | GPIO204 | 24 | ||
| 25 | GND | GND | GND | GND | GPIO7 | SPI0 CE1 | PG8 | GPIO200 | PI11 | GPIO267 | PI9 | GPIO265 | 26 | ||||
| 27 | PC2 | GPIO66 | NC | NC | GPIO0 | EEPROM SDA | GPIO1 | EEPROM SCL | PG7 | GPIO199 | PI10 | GPIO266 | PI10 | GPIO266 | 28 | ||
| 29 | PC4 | GPIO68 | NC | NC | GPIO5 | GPCLK1 | GND | GND | GND | GND | 30 | ||||||
| 31 | PI5 | GPIO261 | PI9 | GPIO265 | PG6 | GPIO198 | GPIO6 | GPCLK2 | GPIO12 | PWM0 | PG9 | GPIO201 | PI12 | GPIO268 | PI6 | GPIO262 | 32 |
| 33 | PI14 | GPIO270 | NC | NC | GPIO13 | PWM1 | GND | GND | GND | GND | 34 | ||||||
| 35 | PC6 | GPIO70 | PI1 | GPIO257 | PC6 | GPIO70 | GPIO19 | PCM FS | GPIO16 | SPI1 CE2 | NC | NC | PG11 | GPIO203 | 36 | ||
| 37 | PC15 | GPIO79 | PI13 | GPIO269 | PC15 | GPIO79 | GPIO26 |
|
GPIO20 | PCM DIN | PH10 | GPIO234, IR_RX | PH10 | GPIO234, IR_RX | PH4 | GPIO228 | 38 |
| 39 | GND | GND | GND | GND | GPIO21 | PCM DOUT | PC8 | GPIO72 | PI2 | GPIO258 | PC8 | GPIO72 | 40 | ||||