+++
title = "Imgtec CI20"
date = "2026-02-19T09:30:45+01:00"
type = "index"

+++

+ Architecture: MIPS Little-Endian
+ SoC: JZ4780
+ CPU: Dual 1.2 Ghz Xburst MIPS32r2
+ RAM: 1 GB
+ Flash: 8 GB NAND (MLC)
+ 100 MBit/s Ethernet (dm9000)
+ 2x USB 2.0
+ SD-Cardreader
+ Wifi BCM4330
+ Bluetooth
+ GPU: PowerVR SGX540
+ HDMI 
+ Audio
+ Serial console (2 TX, 3 GND, 4 RX)
+ Bootloader: U-Boot
+ Power Supply 5V 2A

U-Boot 01/2026 does not allow to boot from NAND, you need to use a SD-Card.
There is an old Github fork from 2015 which allows to boot the device from NAND.

Linux (7.1.x) does not Support the second CPU core on this device.

Wikipedia: https://en.wikipedia.org/wiki/Imagination_Creator

![Imgtec CI20](/img/ci20.jpg)

dmesg:
```
[    0.000000] Linux version 6.12.74-1 (wbx@fluor) (mipsel-openadk-linux-uclibc-gcc (GCC) 15.2.0, GNU ld (GNU Binutils) 2.46.0.20260210) #1 PREEMPT Fri Feb 20 07:44:38 CET 2026
[    0.000000] CPU0 revision is: 3ee1024f (Ingenic XBurst)
[    0.000000] FPU revision is: 00330000
[    0.000000] MIPS: machine is img,ci20
[    0.000000] earlycon: jz4780_uart0 at MMIO 0x10034000 (options '')
[    0.000000] printk: legacy bootconsole [jz4780_uart0] enabled
[    0.000000] User-defined physical RAM map overwrite
[    0.000000] OF: reserved mem: Reserved memory: No reserved-memory node in the DT
[    0.000000] cma: Reserved 32 MiB at 0x00c00000 on node -1
[    0.000000] Primary instruction cache 32kB, VIVT, 8-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 8-way, VIPT, no aliases, linesize 32 bytes
[    0.000000] MIPS secondary cache 256kB, 8-way, linesize 128 bytes.
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x000000001fffffff]
[    0.000000]   HighMem  [mem 0x0000000020000000-0x000000005fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000000fffffff]
[    0.000000]   node   0: [mem 0x0000000030000000-0x000000005fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000005fffffff]
[    0.000000] On node 0, zone HighMem: 131072 pages in unavailable ranges
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Kernel command line: console=ttyS4,115200 console=tty0 mem=256M@0x0 mem=768M@0x30000000 rootwait root=/dev/mmcblk0p1 devtmpfs.mount=1 earlycon console=ttyS4,115200 clk_ignore_unused
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 262144
[    0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] NR_IRQS: 256
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] clocksource: ingenic-timer: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 38884100 ns
[    0.000002] sched_clock: 16 bits at 750kHz, resolution 1333ns, wraps every 43690000ns
[    0.008296] Console: colour dummy device 80x25
[    0.012777] printk: legacy console [tty0] enabled
[    0.018630] Calibrating delay loop... 1196.85 BogoMIPS (lpj=5984256)
[    0.059228] pid_max: default: 32768 minimum: 301
[    0.064109] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.071530] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.081684] rcu: Hierarchical SRCU implementation.
[    0.086522] rcu: 	Max phase no-delay instances is 1000.
[    0.092216] Memory: 991148K/1048576K available (6559K kernel code, 265K rwdata, 2572K rodata, 256K init, 172K bss, 23984K reserved, 32768K cma-reserved, 786432K highmem)
[    0.108242] devtmpfs: initialized
[    0.117093] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.127190] futex hash table entries: 256 (order: 0, 3072 bytes, linear)
[    0.135145] pinctrl core: initialized pinctrl subsystem
[    0.140798] regulator-dummy: no parameters, enabled
[    0.141723] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.154781] /hdmi@10180000: Fixed dependency cycle(s) with /lcdc0@13050000
[    0.161869] /lcdc0@13050000: Fixed dependency cycle(s) with /hdmi@10180000
[    0.171397] /hdmi@10180000: Fixed dependency cycle(s) with /connector
[    0.178017] /connector: Fixed dependency cycle(s) with /hdmi@10180000
[    0.189593] gpio gpiochip0: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    0.199273] gpio gpiochip1: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    0.208885] gpio gpiochip2: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    0.218358] gpio gpiochip3: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    0.227966] gpio gpiochip4: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    0.237569] gpio gpiochip5: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    0.251474] jz4780-dma 13420000.dma: JZ4780 DMA controller initialised
[    0.258838] eth0_power: 3300 mV, disabled
[    0.259009] reg-fixed-voltage fixedregulator-0: eth0_power supplying 3300000uV
[    0.259561] SCSI subsystem initialized
[    0.263453] usbcore: registered new interface driver usbfs
[    0.269235] otg_power: 5000 mV, disabled
[    0.269390] reg-fixed-voltage fixedregulator-2: otg_power supplying 5000000uV
[    0.269574] vcc_33v: 3300 mV, enabled
[    0.269705] reg-fixed-voltage fixedregulator-5: vcc_33v supplying 3300000uV
[    0.269861] usbcore: registered new interface driver hub
[    0.275261] usbcore: registered new device driver usb
[    0.280570] pps_core: LinuxPPS API ver. 1 registered
[    0.285569] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.294935] PTP clock support registered
[    0.299157] jz4780-nemc 13410000.nemc: /nemc@13410000/efuse@d0 requests invalid bank 0
[    0.307235] jz4780-nemc 13410000.nemc: /nemc@13410000/efuse@d0 has no addresses
[    0.314681] jz4780-nemc 13410000.nemc: JZ4780 NEMC initialised
[    0.322055] clocksource: Switched to clocksource ingenic-timer
[    0.337431] NET: Registered PF_INET protocol family
[    0.342645] IP idents hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.351083] tcp_listen_portaddr_hash hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.359729] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.367633] TCP established hash table entries: 2048 (order: 1, 8192 bytes, linear)
[    0.375467] TCP bind hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.382766] TCP: Hash tables configured (established 2048 bind 2048)
[    0.389307] UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.395957] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.403173] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.409365] RPC: Registered named UNIX socket transport module.
[    0.415381] RPC: Registered udp transport module.
[    0.420110] RPC: Registered tcp transport module.
[    0.424902] RPC: Registered tcp-with-tls transport module.
[    0.430441] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.437731] Initialise system trusted keyrings
[    0.442423] workingset: timestamp_bits=14 max_order=18 bucket_order=4
[    0.450070] Key type asymmetric registered
[    0.454251] Asymmetric key parser 'x509' registered
[    0.459234] bounce: pool size: 64 pages
[    0.463193] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[    0.470714] io scheduler mq-deadline registered
[    0.475291] io scheduler kyber registered
[    0.479357] io scheduler bfq registered
[    0.485399] ledtrig-cpu: registered to indicate activity on CPUs
[    0.492514] Serial: 8250/16550 driver, 5 ports, IRQ sharing disabled
[    0.501442] 10030000.serial: ttyS0 at MMIO 0x10030000 (irq = 51, base_baud = 3000000) is a 16550A
[    0.511561] 10031000.serial: ttyS1 at MMIO 0x10031000 (irq = 50, base_baud = 3000000) is a 16550A
[    0.521679] 10032000.serial: ttyS2 at MMIO 0x10032000 (irq = 49, base_baud = 3000000) is a 16550A
[    0.531237] serial serial0: tty port ttyS2 registered
[    0.537463] 10033000.serial: ttyS3 at MMIO 0x10033000 (irq = 48, base_baud = 3000000) is a 16550A
[    0.547599] 10034000.serial: ttyS4 at MMIO 0x10034000 (irq = 34, base_baud = 3000000) is a 16550A
[    0.556765] printk: legacy console [ttyS4] enabled
[    0.566470] printk: legacy bootconsole [jz4780_uart0] disabled
[    0.585097] usbcore: registered new interface driver usb-storage
[    0.591279] usbcore: registered new interface driver ch341
[    0.596943] usbserial: USB Serial support registered for ch341-uart
[    0.604311] jz4740-rtc 10003000.rtc: registered as rtc0
[    0.609583] jz4740-rtc 10003000.rtc: hctosys: unable to read the hardware clock
[    0.617555] jz4780-i2c 10050000.i2c: Bus frequency is 400 KHz
[    0.623950] act8865 0-005a: Looking up vp1-supply from device tree
[    0.623983] DCDC1: supplied by vcc_33v
[    0.623999] vcc_33v: could not add device link regulator.4: -ENOENT
[    0.624201] DCDC1: Bringing 1200000uV into 1125000-1125000uV
[    0.630225] jz4780-i2c 10051000.i2c: Bus frequency is 100 KHz
[    0.636807] jz4780-i2c 10052000.i2c: Bus frequency is 100 KHz
[    0.642681] DCDC1: 1125 mV, enabled
[    0.643059] act8865 0-005a: Looking up vp2-supply from device tree
[    0.643086] DCDC2: supplied by vcc_33v
[    0.643101] vcc_33v: could not add device link regulator.5: -ENOENT
[    0.643579] DCDC2: 1500 mV, enabled
[    0.643669] jz4780-i2c 10053000.i2c: Bus frequency is 100 KHz
[    0.649646] act8865 0-005a: Looking up vp3-supply from device tree
[    0.649673] DCDC3: supplied by vcc_33v
[    0.649687] vcc_33v: could not add device link regulator.6: -ENOENT
[    0.650163] DCDC3: 3300 mV, enabled
[    0.650543] jz4780-i2c 10054000.i2c: Bus frequency is 400 KHz
[    0.656873] SUDCDC_REG4: 5000 mV, enabled
[    0.657239] act8865 0-005a: Looking up inl-supply from device tree
[    0.657267] LDO5: supplied by vcc_33v
[    0.657282] vcc_33v: could not add device link regulator.8: -ENOENT
[    0.657778] LDO5: 2500 mV, enabled
[    0.658253] LDO6: Bringing 3300000uV into 1800000-1800000uV
[    0.665493] jz4740-mmc 13450000.mmc: Got CD GPIO
[    0.670223] jz4740-mmc 13450000.mmc: Looking up vmmc-supply from device tree
[    0.670417] jz4740-mmc 13450000.mmc: Looking up vqmmc-supply from device tree
[    0.671721] clocksource: ingenic-ost: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 637086815595 ns
[    0.681643] clocksource: Switched to clocksource ingenic-ost
[    0.687445] sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 715827882841ns
[    0.696367] usbcore: registered new interface driver usbhid
[    0.702218] usbhid: USB HID core driver
[    0.706913] NET: Registered PF_PACKET protocol family
[    0.712234] jz4740-mmc 13450000.mmc: Ingenic SD/MMC card driver registered
[    0.719147] jz4740-mmc 13450000.mmc: Using DMA, 4-bit mode
[    0.731860] Loading compiled-in X.509 certificates
[    0.755594] dm9000 16000000.dm9000: Looking up vcc-supply from device tree
[    0.792429] dm9000 16000000.dm9000: read wrong id 0x2b2a2928
[    0.798148] dm9000 16000000.dm9000: read wrong id 0x2b2a2928
[    0.803880] dm9000 16000000.dm9000: read wrong id 0x2b2a2928
[    0.809573] dm9000 16000000.dm9000: read wrong id 0x2b2a2928
[    0.815301] dm9000 16000000.dm9000: read wrong id 0x2b2a2928
[    0.820996] dm9000 16000000.dm9000: read wrong id 0x2b2a2928
[    0.826789] dm9000 16000000.dm9000: read wrong id 0x2b2a2928
[    0.832535] LDO6: 1800 mV, disabled
[    0.832630] dm9000 16000000.dm9000: read wrong id 0x2b2a2928
[    0.838480] act8865 0-005a: Looking up inl-supply from device tree
[    0.838510] LDO6: supplied by vcc_33v
[    0.838670] dm9000 16000000.dm9000: wrong id: 0x2b2a2928
[    0.844077] LDO7: Bringing 3300000uV into 2800000-2800000uV
[    0.849707] dm9000 16000000.dm9000: not found (-19).
[    0.855715] LDO7: 2800 mV, disabled
[    0.856022] act8865 0-005a: Looking up inl-supply from device tree
[    0.856052] LDO7: supplied by vcc_33v
[    0.856736] LDO8: Bringing 3300000uV into 1500000-1500000uV
[    0.862659] clk: Not disabling unused clocks
[    0.868014] LDO8: 1500 mV, disabled
[    0.868353] act8865 0-005a: Looking up inl-supply from device tree
[    0.868384] LDO8: supplied by vcc_33v
[    0.868766] LDO_REG9: 3300 mV, enabled
[    0.869235] LDO_REG10: 1200 mV, enabled
[    0.870522] bt_power: 3300 mV, disabled
[    0.870676] reg-fixed-voltage fixedregulator-1: Looking up vin-supply from device tree
[    0.870701] bt_power: supplied by SUDCDC_REG4
[    0.871004] reg-fixed-voltage fixedregulator-1: bt_power supplying 3300000uV
[    0.871488] wifi_power: will resolve supply early: vin
[    0.871506] reg-fixed-voltage fixedregulator-4: Looking up vin-supply from device tree
[    0.871530] wifi_power: supplied by bt_power
[    0.871544] bt_power: could not add device link regulator.15: -ENOENT
[    0.871591] wifi_power: 3300 mV, enabled
[    0.871733] reg-fixed-voltage fixedregulator-4: wifi_power supplying 3300000uV
[    0.872385] jz4740-mmc 13460000.mmc: allocated mmc-pwrseq
[    0.877837] jz4740-mmc 13460000.mmc: Looking up vmmc-supply from device tree
[    0.877999] jz4740-mmc 13460000.mmc: Looking up vqmmc-supply from device tree
[    0.904943] jz4740-mmc 13460000.mmc: Ingenic SD/MMC card driver registered
[    0.911896] jz4740-mmc 13460000.mmc: Using DMA, 4-bit mode
[    0.918006] Waiting for root device /dev/mmcblk0p1...
[    0.967179] mmc0: host does not support reading read-only switch, assuming write-enable
[    0.977438] mmc0: new high speed SDHC card at address ab40
[    0.983976] mmcblk0: mmc0:ab40 SU04G 3.69 GiB
[    0.991665]  mmcblk0: p1 p2
[    1.004069] EXT4-fs (mmcblk0p1): mounting ext2 file system using the ext4 subsystem
[    1.015613] EXT4-fs (mmcblk0p1): mounted filesystem d96f72c3-7a6d-478e-8b11-cab4af10af57 ro without journal. Quota mode: disabled.
[    1.027566] VFS: Mounted root (ext2 filesystem) readonly on device 179:1.
[    1.035272] devtmpfs: mounted
[    1.041074] mmc1: new high speed SDIO card at address 0001
[    1.046805] Freeing unused kernel image (initmem) memory: 256K
[    1.053158] This architecture does not have kernel memory protection.
[    1.059650] Run /sbin/init as init process
[    1.063837]   with arguments:
[    1.063847]     /sbin/init
[    1.063857]   with environment:
[    1.063865]     HOME=/
[    1.063874]     TERM=linux
[    1.074459] process '/bin/busybox' started with executable stack
[    1.572194] EXT4-fs (mmcblk0p1): re-mounted d96f72c3-7a6d-478e-8b11-cab4af10af57.
[   11.422448] dwc2 13500000.usb: Looking up vusb_d-supply from device tree
[   11.422482] dwc2 13500000.usb: Looking up vusb_d-supply property in node /usb@13500000 failed
[   11.422531] dwc2 13500000.usb: supply vusb_d not found, using dummy regulator
[   11.422711] dwc2 13500000.usb: Looking up vusb_a-supply from device tree
[   11.422730] dwc2 13500000.usb: Looking up vusb_a-supply property in node /usb@13500000 failed
[   11.422757] dwc2 13500000.usb: supply vusb_a not found, using dummy regulator
[   11.422832] dwc2 13500000.usb: Looking up vbus-supply from device tree
[   11.422850] dwc2 13500000.usb: Looking up vbus-supply property in node /usb@13500000 failed
[   11.422946] dwc2 13500000.usb: Bad value for GSNPSID: 0x00000000
[   14.202147] EXT4-fs (mmcblk0p1): warning: mounting unchecked fs, running e2fsck is recommended
[   14.211359] EXT4-fs (mmcblk0p1): re-mounted d96f72c3-7a6d-478e-8b11-cab4af10af57 r/w.
```

Have fun!
