date: Wed 29 Jan 2025 04:07:56 PM PST
subj: next thing NTC chip C.H.I.P resurrection
auth: bbsing at s d f . o r g
--------------------------------------------------

Background:
-----------------------------
I have a Next Thing Co (NTC) C.H.I.P computer.

This little SBC computer was about $9 when NTC was selling them.
Not long after I got this little computer NTC started having
huge problems, and eventually they vanished as a company.

History of NTC link:
--------------------
       https://en.wikipedia.org/wiki/CHIP_(computer)

Their single board computers (SBC) were really cool devices and
they had some features I wish the leader in this space
(raspbberypi) had and NTC's price point ($9) was really awesome.
The problem is NTC went bankrupt, and eventually they shut down
the file repository crippling the community and support for
their computers. Right about that time I attempted to update my
little CHIP computer not knowing NTC had decided to vanish.
After the update attempt the little CHIP no longer would boot.

Something to do with a slight difference on my version of the
board or some sort of corruption during the update/shutdown
process caused it to never boot up again.


My problem is I'm not that good at computing, and I'm really bad
at linux U-Boot.

Troubleshooting:
-----------------------------
Using my raspberrypi remotely with a Waveshare USB
--------------------------------------------------

Connect to UART via device Waveshare USB UART0,
pins on chip =
-------------
       chip U14_urt1-tx -> ws_rx
       ch_urt1-rx -> ws_tx
       ch_U13_gnd -> ws_gnd
-----------------------------------------------------
     U13                              U14
   ___________                      ___________
gnd | [g] [ ] |\_____________urt1-tx_| [r] [ ] |\
   | [ ] [ ] | |............urt1-rx_| [t] [ ] | |
   | [ ] [ ] | |................fel_| [ ] [ ] | |
   | [ ] [ ] | |....................| [ ] [ ] | |
   | [ ] [ ] | |....................| [ ] [ ] | |
   | [ ] [ ] | |....................| [ ] [ ] | |
   | [ ] [ ] | |....................| [ ] [ ] | |

    ^^^^^^^^^^^ Diagram of chip GPIO ports ^^^^
-----------------------------------------------------
I had to connect to the CHIP this way in order to see what is
happening when the system attempts to boot up. Luckily I have
access to the device and I can reset the device via U-boot
command "reset". This gives me some place to start.
----------------------------------------------
Launch minicom via:
------------------
       sudo minicom -D /dev/ttyACM0 -b115200


----------------------------------------------
                  Output of the boot process:
----------------------------------------------
************************************************************************
*                                                                      *
*  reset                                                               *
*  resetting ...                                                       *
*                                                                      *
*  U-Boot SPL 2016.01-00089-gccd1de0 (Jan 13 2017 - 00:45:55)          *
*  DRAM: 512 MiB                                                       *
*  CPU: 1008000000Hz, AXI/AHB/APB: 3/2/2                               *
*  Trying to boot from NAND                                            *
*                                                                      *
*                                                                      *
*  U-Boot 2016.01-00089-gccd1de0 (Jan 13 2017 - 00:45:55 +0000)        *
*  Allwinner Technology                                                *
*                                                                      *
*  CPU:   Allwinner A13 (SUN5I)                                        *
*  I2C:   ready                                                        *
*  DRAM:  512 MiB                                                      *
*  NAND:  4096 MiB                                                     *
*  video-mode 720x480-24@60 not available, falling back to             *
*          1024x768-24@60                                              *
*                                                                      *
*  Setting up a 720x480i composite-ntsc console (overscan 40x20)       *
*  In:    serial                                                       *
*  Out:   serial                                                       *
*  Err:   serial                                                       *
*  Net:   usb_ether                                                    *
*  starting USB...                                                     *
*  No controllers found                                                *
*  Hit any key to stop autoboot:  2  1  0                  *
*  ## Error: "test_fastboot" not defined                               *
*                                                                      *
*  device nand0 <sunxi-nand.0>, # parts = 5                            *
*  #: name         size            offset          mask_flags          *
*  0: spl                 0x00400000       0x00000000      0           *
*  1: spl-backup          0x00400000       0x00400000      0           *
*  2: uboot               0x00400000       0x00800000      0           *
*  3: env                 0x00400000       0x00c00000      0           *
*  4: UBI                 0xff000000       0x01000000      0           *
*                                                                      *
*  active partition: nand0,0 - (spl) 0x00400000 @ 0x00000000           *
*                                                                      *
*  defaults:                                                           *
*  mtdids  : none                                                      *
*  mtdparts: none                                                      *
*  ubi0: attaching mtd1                                                *
*  ubi0: scanning is finished                                          *
*  ubi0: attached mtd1 (name "mtd=4", size 4080 MiB)                   *
*  ubi0: PEB size: 4194304 bytes (4096 KiB), LEB size: 2064384         *
*          bytes                                                       *
*  ubi0: min./max. I/O unit sizes: 16384/16384, sub-page size 16384    *
*  ubi0: VID header offset: 16384 (aligned 16384), data offset:        *
*          32768                                                       *
*  ubi0: good PEBs: 1008, bad PEBs: 12, corrupted PEBs: 0              *
*  ubi0: user volume: 0, internal volumes: 1, max. volumes count:      *
*          128                                                         *
*  ubi0: max/mean erase counter: 1/1, WL threshold: 4096, image        *
*          sequence number: 0                                          *
*  ubi0: available PEBs: 993, total reserved PEBs: 15, PEBs            *
*          reserved for bad PEB handling: 8                            *
*  ubi0: LEBs per PEB: 2                                               *
*  Error reading superblock on volume 'ubi0:rootfs' errno=-19!         *
*  ubifsmount - mount UBIFS volume                                     *
*                                                                      *
*  Usage:                                                              *
*  ubifsmount <volume-name>                                            *
*      - mount 'volume-name' volume                                    *
*  UBIFS not mounted, use ubifs mount to mount volume first!           *
*  ubifsload - load file from an UBIFS filesystem                      *
*                                                                      *
*  Usage:                                                              *
*  ubifsload <addr> <filename> [bytes]                                 *
*      - load file 'filename' to address 'addr'                        *
*  UBIFS not mounted, use ubifs mount to mount volume first!           *
*  ubifsload - load file from an UBIFS filesystem                      *
*                                                                      *
*  Usage:                                                              *
*  ubifsload <addr> <filename> [bytes]                                 *
*      - load file 'filename' to address 'addr'                        *
*  UBIFS not mounted, use ubifs mount to mount volume first!           *
*  ubifsload - load file from an UBIFS filesystem                      *
*                                                                      *
*  Usage:                                                              *
*  ubifsload <addr> <filename> [bytes]                                 *
*      - load file 'filename' to address 'addr'                        *
*  Bad Linux ARM zImage magic!                                         *
*                                                                      *
*  device nand0 <sunxi-nand.0>, # parts = 5                            *
*  #: name         size            offset          mask_flags          *
*  0: spl                 0x00400000       0x00000000      0           *
*  1: spl-backup          0x00400000       0x00400000      0           *
*  2: uboot               0x00400000       0x00800000      0           *
*  3: env                 0x00400000       0x00c00000      0           *
*  4: UBI                 0xff000000       0x01000000      0           *
*                                                                      *
*  active partition: nand0,0 - (spl) 0x00400000 @ 0x00000000           *
*                                                                      *
*  defaults:                                                           *
*  mtdids  : none                                                      *
*  mtdparts: none                                                      *
*  ubi0: detaching mtd1                                                *
*  ubi0: mtd1 is detached                                              *
*  ubi0: attaching mtd1                                                *
*  ubi0: scanning is finished                                          *
*  ubi0: attached mtd1 (name "mtd=4", size 4080 MiB)                   *
*  ubi0: PEB size: 4194304 bytes (4096 KiB), LEB size: 2064384         *
*          bytes                                                       *
*  ubi0: min./max. I/O unit sizes: 16384/16384, sub-page size 16384    *
*  ubi0: VID header offset: 16384 (aligned 16384), data offset:        *
*          32768                                                       *
*  ubi0: good PEBs: 1008, bad PEBs: 12, corrupted PEBs: 0              *
*  ubi0: user volume: 0, internal volumes: 1, max. volumes count: 128  *
*  ubi0: max/mean erase counter: 1/1, WL threshold: 4096, image        *
*          sequence number: 0                                          *
*  ubi0: available PEBs: 993, total reserved PEBs: 15, PEBs            *
*          reserved for bad PEB handling: 8                            *
*  ubi0: LEBs per PEB: 2                                               *
*  Error reading superblock on volume 'ubi0:rootfs' errno=-19!         *
*  ubifsmount - mount UBIFS volume                                     *
*                                                                      *
*  Usage:                                                              *
*  ubifsmount <volume-name>                                            *
*      - mount 'volume-name' volume                                    *
*  UBIFS not mounted, use ubifs mount to mount volume first!           *
*  ubifsload - load file from an UBIFS filesystem                      *
*                                                                      *
*  Usage:                                                              *
*  ubifsload <addr> <filename> [bytes]                                 *
*      - load file 'filename' to address 'addr'                        *
*  UBIFS not mounted, use ubifs mount to mount volume first!           *
*  ubifsload - load file from an UBIFS filesystem                      *
*                                                                      *
*  Usage:                                                              *
*  ubifsload <addr> <filename> [bytes]                                 *
*      - load file 'filename' to address 'addr'                        *
*  Bad Linux ARM zImage magic!                                         *
*  =>                                                                  *
*                                                                      *
************************************************************************



----------------------------------------------
Where to go from here:
---------------------
* Collect information how to proceed.
* Find out how to use U-boot.
* Find out how the boot process works with linux and U-boot.
* Find a working image of any size to upload to the device.
* Attempt to find out if the hardware is still working.
* Attempt to find out of the mmcblock devices not broken.
* Attempt to get the system to boot up to linux.


----------------------------------------------
Problems:
----------------------------------------------
* I know nothing about U-boot embedded systems.
* U-boot version is old (year 2016)
* NTC doesn't exist anymore.
* Support for the computer doesn't exist anymore.
* Software or images don't exist, or are very difficult to find.

----------------------------------------------