From Fedora Project Wiki

 
Line 125: Line 125:
The debug console is pinned out to one of the USB ports (or to the
The debug console is pinned out to one of the USB ports (or to the
micro-mmc slot for rk3128).  Either way requires a custom cable, and provides
micro-mmc slot for rk3128).  Either way requires a custom cable, and provides
3V serial TTL.  A 3V TTL serial to USB serial converter [https://www.pi-supply.com/product/usb-ttl-serial-cable-debug-console-cable-raspberry-pi/ like this] could be spliced to another sacrificial USB-A cable.
3V serial TTL.  A 3V TTL serial to USB serial converter  
[https://www.pi-supply.com/product/usb-ttl-serial-cable-debug-console-cable-raspberry-pi/ like this]
[https://www.amazon.com/JBtek-WINDOWS-Supported-Raspberry-Programming/dp/B00QT7LQ88/ or this] could be spliced to another sacrificial USB-A cable.

Latest revision as of 21:02, 15 March 2017

ASUS C201PA ARM Chromebook

I have mostly questions and only a few answers.

  • Fedora 25 includes the dtb for this model: rk3288-veyron-speedy.dtb
  • As best I can tell from my research, the boot system on this chrome book is called "Depthcharge".
  • Holding down the power button resets the chromebook after a boot attempt hangs.

Apparently, it reads the kernel packed by vbutil_kernel --pack, verifies the signature, and transfers control to the kernel. The bootloader doesn't seem to be used - it seems to be all zero on the factory boot partitions. I don't know what the fedora kernel is missing - there is no output at all.

Examining the ChromeOS kernel reveals a FIT image, so I created rk3288.its:

 /dts-v1/;
 
 / {
     description = "Fedora 25 kernel-4.8.6-300 for ASUS C201PA Chromebook";
     #address-cells = <1>;
     images {
         kernel@1{
             description = "vmlinuz-4.8.6";
             data = /incbin/("vmlinuz-4.8.6-300.fc25.armv7hl");
             type = "kernel_noload";
             arch = "arm";
             os = "linux";
             compression = "none";
             load = <0>;
             entry = <0>;
         };
         fdt@1{
             description = "rk3288-veyron-speedy";
             data = /incbin/("dtb-4.8.6-300.fc25.armv7hl/rk3288-veyron-speedy.dtb");
             type = "flat_dt";
             arch = "arm";
             compression = "none";
         };
     };
     configurations {
         default = "conf@1";
         conf@1{
             description = "rk3288-veyron-speedy (ASUS C201PA Chromebook)";
             kernel = "kernel@1";
             fdt = "fdt@1";
         };
     };
   };

and compiled (in the distro /boot directory) with:

 mkimage -vf rk3288.its rk3288.itb

I wrapped the FIT image with:

 vbutil_kernel --pack        fedora.blob \
               --keyblock    fedora.keyblock    \
               --signprivate fedora.vbprivk     \
               --config      kcmdline           \
               --vmlinuz     rk3288.itb         \
               --bootloader  dummy.boot         \
               --arch arm --version 1

Where dummy.boot is 4k of zeros to match google kernel. This is a similar size to factory ChromeOS kernel image. Now to see if it gets any farther. I still don't see how initrd gets loaded.

So, I tried expanding the FIT image to include initrd:

 /dts-v1/;
 / {
     description = "Fedora 25 kernel-4.8.6-300 for ASUS C201PA Chromebook";
     #address-cells = <1>;
     images {
         kernel@1{
             description = "vmlinuz-4.8.6";
             data = /incbin/("vmlinuz-4.8.6-300.fc25.armv7hl");
             type = "kernel_noload";
             arch = "arm";
             os = "linux";
             compression = "none";
             load = <0>;
             entry = <0>;
         };
         ramdisk@1 {
             description = "recovery ramdisk";
             data = /incbin/("initramfs-4.8.6-300.fc25.armv7hl.img");
             type = "ramdisk";
             arch = "arm";
             os = "linux";
             compression = "gzip";
             load = <00000000>;
             entry = <00000000>;
             hash@1 {
             algo = "sha1";
             };
         };
         fdt@1{
             description = "rk3288-veyron-speedy";
             data = /incbin/("dtb-4.8.6-300.fc25.armv7hl/rk3288-veyron-speedy.dtb");
             type = "flat_dt";
             arch = "arm";
             compression = "none";
         };
     };
     configurations {
         default = "conf@1";
         conf@1{
             description = "rk3288-veyron-speedy (ASUS C201PA Chromebook)";
             kernel = "kernel@1";
             ramdisk = "ramdisk@1";
             fdt = "fdt@1";
         };
     };
   };

I also had to expand the boot partitions to hold the 48M image. Still no joy.

Wrapping uboot as "kernel"

This page mentions wrapping uboot as a kernel so that the chrome book will boot like a raspberry pi. Where does one get uboot to wrap?

ASUS C201PA Arm Chromebook debug console

The rockchip supports a debug console, and the Fedora kernel support the debug console - which would greatly help in seeing what is going wrong at boot. The debug console is pinned out to one of the USB ports (or to the micro-mmc slot for rk3128). Either way requires a custom cable, and provides 3V serial TTL. A 3V TTL serial to USB serial converter like this or this could be spliced to another sacrificial USB-A cable.