You are not logged in.

#1 2014-08-16 19:33:39

MSC
Member
Registered: 2014-07-13
Posts: 33

ASUS Chromebook C200MA-DS01

Anyone else own one of these yet? I've gotten Crouton to work with it, but I haven't been able to get a dual-boot so far. Here's what I've tried:

1. Per Chromebook guides, enable developer mode. This part worked as expected.
2. Set dev_boot_usb=1, dev_boot_legacy=1, reboot, and press Ctrl+L to get a boot menu. This doesn't work. I was able to set the flags successfully, and the output of crossystem (which I'll dump below) indicates that they're correct, but Ctrl+L just causes the system to beep twice and then do nothing. I tried both USB ports and neither one works. The USB in question was created from an archiso using dd. I booted it up on a different system just to make sure the USB itself was fine, and it had no problems there.
3. Remove the BIOS write protection screw and use set_gbb_flags.sh. This shouldn't have been necessary, but I thought it might be worth a try. Sadly, even after setting the flags to 0x489 the system still won't boot the USB. It gives me the double-beep every time it starts now.
4. Install Ubuntu using Chrubuntu. This also failed because Chrubuntu wanted to use a negative number for the new partition size ("Please enter a number between 5 and -4"). It looks like the disk's partitions are in a different order than what chrubuntu expected? In any case, it wouldn't let me proceed.

I can't seem to find any info specific to this device (not surprising, it hasn't been out very long). I'm reading through the Chrubuntu script and I think I'll take a stab at setting up an Arch installation using a similar method. Meanwhile, here's the output of crossystem. I'd be interested to see the output from someone who got a working USB boot in case there's some flag here that's different from other Chromebooks.

arch                   = x86                            # Platform architecture
block_devmode          = 0                              # Block all use of developer mode
clear_tpm_owner_request = 0                              # Clear TPM owner on next boot
clear_tpm_owner_done   = 0                              # Clear TPM owner done
cros_debug             = 1                              # OS should allow debug features
dbg_reset              = 0                              # Debug reset mode request (writable)
ddr_type               = unknown                        # Type of DDR RAM
debug_build            = 0                              # OS image built for debug features
dev_boot_usb           = 1                              # Enable developer mode boot from USB/SD (writable)
dev_boot_legacy        = 1                              # Enable developer mode boot Legacy OSes (writable)
dev_boot_signed_only   = 0                              # Enable developer mode boot only from official kernels (writable)
devsw_boot             = 1                              # Developer switch position at boot
devsw_cur              = 1                              # Developer switch current position
disable_dev_request    = 0                              # Disable virtual dev-mode on next boot
ecfw_act               = RW                             # Active EC firmware
fmap_base              = 0xffe10000                     # Main firmware flashmap physical address
fwb_tries              = 0                              # Try firmware B count (writable)
fwid                   = Google_Squawks.5216.152.21     # Active firmware ID
fwupdate_tries         = 0                              # Times to try OS firmware update (writable, inside kern_nv)
hwid                   = SQUAWKS D7A-D2G-A5Z            # Hardware ID
kern_nv                = 0x00000000                     # Non-volatile field for kernel use
kernkey_vfy            = sig                            # Type of verification done on kernel key block
loc_idx                = 0                              # Localization index for firmware screens (writable)
mainfw_act             = A                              # Active main firmware
mainfw_type            = developer                      # Active main firmware type
nvram_cleared          = 1                              # Have NV settings been lost?  Write 0 to clear
oprom_needed           = 0                              # Should we load the VGA Option ROM at boot?
platform_family        = BayTrail                       # Platform family type
recovery_reason        = 0                              # Recovery mode reason for current boot
recovery_request       = 0                              # Recovery mode request (writable)
recovery_subcode       = 0                              # Recovery reason subcode (writable)
recoverysw_boot        = 0                              # Recovery switch position at boot
recoverysw_cur         = (error)                        # Recovery switch current position
recoverysw_ec_boot     = 0                              # Recovery switch position at EC boot
ro_fwid                = Google_Squawks.5216.152.21     # Read-only firmware ID
savedmem_base          = 0x00f00000                     # RAM debug data area physical address
savedmem_size          = 1048576                        # RAM debug data area size in bytes
sw_wpsw_boot           = 1                              # Firmware write protect software setting enabled at boot
tpm_fwver              = 0x00050001                     # Firmware version stored in TPM
tpm_kernver            = 0x00010001                     # Kernel version stored in TPM
tried_fwb              = 0                              # Tried firmware B before A this boot
vdat_flags             = 0x00002c16                     # Flags from VbSharedData
vdat_timers            = LFS=175990100,280167784 LF=281179054,423939932 LK=1,3206894 # Timer values from VbSharedData
wpsw_boot              = 0                              # Firmware write protect hardware switch position at boot
wpsw_cur               = 0                              # Firmware write protect hardware switch current position

Offline

#2 2014-08-17 05:12:32

evrom
Member
Registered: 2012-11-03
Posts: 8

Re: ASUS Chromebook C200MA-DS01

I have a baytrail chromebook aswell (CTL intel education chromebook, board name "enguard") and i have the same problems. From what I've gathered from this, we have to: extract the coreboot bios from the chromebook, build a custom coreboot that has seabios using some of the binary blobs from the stock coreboot, disable write protection, and flash the homebuilt coreboot.

http://www.chromium.org/chromium-os/dev … chromebook

I haven't made much progress with this.

arch                   = x86                            # Platform architecture
block_devmode          = (error)                        # Block all use of developer mode
clear_tpm_owner_request = (error)                        # Clear TPM owner on next boot
clear_tpm_owner_done   = (error)                        # Clear TPM owner done
cros_debug             = 1                              # OS should allow debug features
dbg_reset              = (error)                        # Debug reset mode request (writable)
ddr_type               = unknown                        # Type of DDR RAM
debug_build            = 0                              # OS image built for debug features
dev_boot_usb           = (error)                        # Enable developer mode boot from USB/SD (writable)
dev_boot_legacy        = (error)                        # Enable developer mode boot Legacy OSes (writable)
dev_boot_signed_only   = (error)                        # Enable developer mode boot only from official kernels (writable)
devsw_boot             = 1                              # Developer switch position at boot
devsw_cur              = 1                              # Developer switch current position
disable_dev_request    = (error)                        # Disable virtual dev-mode on next boot
ecfw_act               = RW                             # Active EC firmware
fmap_base              = 0xffe10000                     # Main firmware flashmap physical address
fwb_tries              = (error)                        # Try firmware B count (writable)
fwid                   = Google_Enguarde.5216.201.4     # Active firmware ID
fwupdate_tries         = 0                              # Times to try OS firmware update (writable, inside kern_nv)
hwid                   = ENGUARDE C3A-D5L-V2A-Q3L       # Hardware ID
kern_nv                = (error)                        # Non-volatile field for kernel use
kernkey_vfy            = sig                            # Type of verification done on kernel key block
loc_idx                = (error)                        # Localization index for firmware screens (writable)
mainfw_act             = A                              # Active main firmware
mainfw_type            = developer                      # Active main firmware type
nvram_cleared          = (error)                        # Have NV settings been lost?  Write 0 to clear
oprom_needed           = (error)                        # Should we load the VGA Option ROM at boot?
platform_family        = BayTrail                       # Platform family type
recovery_reason        = 0                              # Recovery mode reason for current boot
recovery_request       = (error)                        # Recovery mode request (writable)
recovery_subcode       = (error)                        # Recovery reason subcode (writable)
recoverysw_boot        = 0                              # Recovery switch position at boot
recoverysw_cur         = (error)                        # Recovery switch current position
recoverysw_ec_boot     = 0                              # Recovery switch position at EC boot
ro_fwid                = Google_Enguarde.5216.201.4     # Read-only firmware ID
savedmem_base          = 0x00f00000                     # RAM debug data area physical address
savedmem_size          = 1048576                        # RAM debug data area size in bytes
sw_wpsw_boot           = 1                              # Firmware write protect software setting enabled at boot
tpm_fwver              = 0x00010001                     # Firmware version stored in TPM
tpm_kernver            = 0x00010001                     # Kernel version stored in TPM
tried_fwb              = 0                              # Tried firmware B before A this boot
vdat_flags             = 0x00002c56                     # Flags from VbSharedData
vdat_timers            = LFS=182165192,240514846 LF=241386618,372711680 LK=0,27486913 # Timer values from VbSharedData
wpsw_boot              = 1                              # Firmware write protect hardware switch position at boot
wpsw_cur               = 1                              # Firmware write protect hardware switch current position

Offline

#3 2014-08-19 10:51:19

MSC
Member
Registered: 2014-07-13
Posts: 33

Re: ASUS Chromebook C200MA-DS01

Yikes. Well, here's an alternative I'm working on: get coreboot to run Arch directly. I managed to get this working on my hardware, and I think this strategy should work on other Chromebooks as well. The upside is that it doesn't require hardware modification and kernel modules can be borrowed from Chrome OS for better compatibility, but the downside is that you're stuck running Linux-3.10.18 and can't change the init hooks. Here's the procedure I used if you want to give it a try:

1. From a working Arch install: Format a USB drive with ext4. Use pacstrap to install the base group, gdisk (or your preferred partition editor), and arch-install-scripts to that drive. Sync and eject.

2. Start Chrome OS and switch to the VT or the crosh shell. Plug in the USB, mount, and cd to it. Execute "usr/bin/arch-chroot . bash" to enter the chroot.

3. Using gdisk, delete the stateful partition (STATE). Re-create it with the same index (1), same label, same code (700), and same block start. I used a new size of 256MiB. Create two new partitions: one of size 16MiB, and one that takes up the rest of the disk. Set their type codes to 7F00 and 7F01 respectively. I named them KERN-ARCH and ROOT-ARCH, and on my disk they ended up having indices 13 and 14. Save changes to disk and reboot. This will clobber your stateful partition (it's not possible to unmount/resize it gracefully as far as I can tell), so if you want any data off of it, you'd better grab it first.

4. Upon boot, Chrome OS will reformat the stateful partition. Connect to wi-fi again, since an internet connection is needed to install Arch. Switch back to the VT or Crosh and chroot into the USB again.

5. The Arch partitions should still be there. KERN-ARCH's contents don't matter. Format ROOT-ARCH with your favorite fs and mount it. Install to that partition the same way you normally would, but DON'T run mkinitcpio or install a boot loader, as neither of them will do anything. Also, if you used genfstab, there will be an entry for /dev/zram0; leave that out.

6. Exit both chroots so you're back in Chrome OS' shell, but don't unmount them. cd to the path where ROOT-ARCH is mounted. From here, you can run a script I wrote that will handle copying the Chrome OS kernel to Arch and install some boot config tools:
Pastebin link because this is really long. I call it ArChr.
(EDIT: Updated this. There are three packages now, it also includes linux-chromeboot-firmware.)

At this point, you can unmount the partitions and reboot the computer to (hopefully) boot into Arch. ArChr contains a "linux-chromeboot" package, which contains kernel modules, as well as a "chromeboot" package, which contains the following boot utilities:
"chromeboot" - run "chromeboot chrome" to make the system boot Chrome OS; run "chromeboot linux" to make the system boot Arch. Use "chromeboot linux once" to start linux only on the next boot.
"chromeboot-update" - updates the command-line parameters for the Arch kernel. Config is stored in /etc/chromeboot.conf; edit that first, then call this script to apply it.
"cgpt" and "vbutil_kern" from Chrome OS. Others like "crossystem" and "set_gbb_flags.sh" are copied if it can find them.

The ideal GBB flags for this setup seem to be 0x11. That enables fast booting but doesn't force legacy devices; there's no need for dev_boot_legacy or dev_boot_usb. You can destroy and recreate the Arch partition as many times as you'd like. It's running pretty well for me so far - Arch is a lot faster than Chrome OS and I haven't run into any problems yet despite the old kernel. I don't know of any way to get a linux-headers package for this, though, so you're out of luck if you want to compile modules. You can install other kernels (or the default kernel), but there's no way to boot them.

Other thought: By playing around with the Chrome OS utilities I found that vbutil_kernel actually can pack the Arch kernel, but it hangs on boot without any output. Copying the Chrome OS kernel isn't very elegant or Arch-y but at least it works. This is the same thing that Chrubuntu does, and this Cr-48 page, the only other resource I can find for this type of install, suggests that running a non-Chrome OS kernel would take a lot of work. So that's probably not going to happen without using legacy boot.

Last edited by MSC (2014-08-23 08:32:19)

Offline

#4 2014-08-20 07:48:27

sbstngrigo
Member
Registered: 2014-08-20
Posts: 1

Re: ASUS Chromebook C200MA-DS01

Hi Everyone

The problem with the Asus C200 is that the coreboot used on this devices does not include a seabios payload, which is needed to boot the kernel in a traditional way.

As I am awaiting my Asus C200 and want to have gnu linux running on it I took the freedom to take this issue / thread to John Lewis. He is building custom coreboot with seabios included rom that can replace the original. He is running a google+ community "coreboot on chromebook".

Anyway he has produced a test build for the Asus C200
https://johnlewis.ie/test-roms-for-squa … eon-added/
I could not test it yet, as I am still waiting for the device.

Here is a copy of the conversation I had with him:

Has anyone of you tried to dual boot Linux on the Asus Chromebook c200. I have been searching a lot about this, but the only thing that is working for sure is the crouton script.
The only efforts in dual booting / replacing Chrome OS I have found are failed attempts like this one https://bbs.archlinux.org/viewtopic.php?id=185789
Are there any issues with Bay Trails or is it Asus related?


I think it's only going to dual boot (in the traditional sense) if you do everything through SeaBIOS. That means using one of Arnold The Bat's ChromiumOS builds, upgrading to ChromeOS, and modifying whatever boot mechanism that's using. Haven't the faintest idea how so maybe you should look at one of the images to see how it's booting (Grub, etc.).
Matt DeVillier
Moderator
18.08.2014


+John Lewis  from reading that arch link, seems like they don't have a working SeaBIOS currently.  Would need someone to read their firmware and post for analysis, but they might just need an updated payload/CBFS
John Lewis
Inhaber
18.08.2014


Well done +Matt DeVillier on actually reading the link! I was just going on the post itself. wink

Yeah, sounds like there's no working SeaBIOS with Baytrail devices. I might extract the shell-ball ROM for one of those yokes and have a look at what's in the RW_LEGACY slot.
Matt DeVillier
Moderator
18.08.2014



Given the performance / compromises with BayTrail, it's a lot less interesting to me as a non-ChromeOS platform than Haswell, so I'm not terribly inclined to pursue it myself
sebastian grigo
18.08.2014



Thank you for your hints. I will have a look into Chromium OS builds (Arnold the Bat's).
Though I have no real clue how to read the firmware, I will give it a try and see what I can find.
John Lewis
Inhaber
18.08.2014




+sebastian grigo You should probably ignore my first response, it was in the wrong context. I realise now that what you meant by "dual-boot" is the ability to use a legacy BIOS.
John Lewis
Inhaber
18.08.2014




You can make a sort of copy of your firmware using "sudo flashrom -r backup.rom" in ChromeOS. You'll then need to download and compile a program called "Flashmap" to get at the ROM's layout. Then you'll need to extract the RW_LEGACY slot CBFS (if there is one). Or, I can do it for you with a shell-ball ROM instead. The more models supported the merrier! And, maybe it's just a case of generating/regenerating an appropriate CBFS with a new version of SeaBIOS in and flashing that (as Matt alluded to). The latter wouldn't even require you to disable write-protect.
sebastian grigo
18.08.2014




Again Thanks for your help. The device will be shipped tomorrow. I will try the flashrom backup then and probably will have a few more questions to ask.
Matt DeVillier
Moderator
18.08.2014


+John Lewis he can probably just extract the CBFS vs the entire firmware using:
sudo flashrom -r -i RW_LEGACY:backup.rom

like one would for flashing, so no need for flashmap - right?
John Lewis
Inhaber
18.08.2014




Heh, yeah, forgot about that, +Matt DeVillier. I've been up late a lot lately!
John Lewis
Inhaber
Gestern um 12:29




So, I've taken the liberty of extracting the Shell-ball ROM and ... there is no CBFS in the RW_LEGACY slot.

So, we can try building one, and if that doesn't work, maybe compile a whole ROM, +sebastian grigo?
John Lewis
Inhaber
Gestern um 12:52


Here's one to try https://johnlewis.ie/Chromebook-ROMs/AS … EGACY.cbfs md5sum is in md5sums.txt from same location.

Flash it using sudo flashrom -w -i RW_LEGACY:ASUS-C200-RW_LEGACY.cbfs from the same directory you downloaded to. You don't need to disable write-protect, and even if it doesn't work, it won't brick your device.
sebastian grigo
Gestern um 17:42




Sorry for answering late. According to UPS the chromebook was delivered today. Once I have picked it up from the station / neighbour I will start.

I assume that I will need a backup of the current coreboot / chrome os in case something goes wrong? Or am I lost once I flash a non working coreboot?

Also there is a possible solution in the original  link (https://bbs.archlinux.org/viewtopic.php?id=185789) I sent before.
Matt DeVillier
Moderator
Gestern um 17:46


+sebastian grigo no need to back anything up, you can always restore from a recovery image if needed.  Flash the updated legacy BIOS (SeaBIOS) as above, then boot to it (CTRL-L) and install Arch normally.  If you don't like it, create a recovery image (might want to do this first, since it's easy from within ChromeOS) and then everything will be reset to stock
John Lewis
Inhaber
Gestern um 18:00


+sebastian grigo There is nothing currently in the RW_LEGACY part of the ROM for the ASUS C200, so there is nothing to backup, in this case.

BTW, I've also created a complete ROM for the ASUS C200. I'll make it part of the ROM download script so you can try it (or not) at your leisure. Aaron Durbin has indicated it should work with the setup I have.
John Lewis
Inhaber
Gestern um 18:03



+sebastian grigo That solution isn't native, it's like the Arch equivalent of ChrUbuntu, and comes with all the limitations of same. I wouldn't go for it, but that's just me.

Offline

#5 2014-08-21 05:37:40

MSC
Member
Registered: 2014-07-13
Posts: 33

Re: ASUS Chromebook C200MA-DS01

Yeah, an Arch equivalent of Chrubuntu is exactly what I was going for, haha. Not a very optimal solution. (by the way, I edited my post with a new version - I just realized that audio doesn't work unless you copy the linux firmware as well)

sbstngrigo wrote:

Here's one to try https://johnlewis.ie/Chromebook-ROMs/AS … EGACY.cbfs md5sum is in md5sums.txt from same location.

Flash it using sudo flashrom -w -i RW_LEGACY:ASUS-C200-RW_LEGACY.cbfs from the same directory you downloaded to. You don't need to disable write-protect, and even if it doesn't work, it won't brick your device.

This made a bit of progress! I don't get the beeps anymore, but unfortunately all I see after pressing Ctrl+L is a blank screen. I'll try contacting him and see if I can provide any helpful info.

Offline

#6 2014-08-22 15:08:27

hcra
Member
From: Oregon
Registered: 2013-04-20
Posts: 56

Re: ASUS Chromebook C200MA-DS01

+MSC, if I might ask, please, could you please share your impressions of the ASUS C200. I'm sitting on the fence, and would very much appreciate your general comments about the device.

(Members of the community, please excuse this post, knowing that it violates the rules of our community. It's terribly difficult getting an informed opinion.)

Offline

#7 2014-08-23 09:09:41

MSC
Member
Registered: 2014-07-13
Posts: 33

Re: ASUS Chromebook C200MA-DS01

For $200 it's a nice laptop. The hardware feels solid (for the price) and the specs are good enough for web browsing, video streaming, simple games, etc. The battery lasts 10-12 hours on a full charge. It's a lot more difficult to install Linux on this than most Chromebooks, though. I'd recommend waiting until John Lewis gets a custom ROM working for it, at least.

Offline

#8 2014-10-19 19:39:37

ellisgeek
Member
From: Wisconsin, US
Registered: 2014-10-19
Posts: 1

Re: ASUS Chromebook C200MA-DS01

Any update to this? Looks like John Lewis has restructured his site and the test images are gone. I am really hurtin to get off chrubuntu.

Offline

#9 2014-10-20 06:52:22

MSC
Member
Registered: 2014-07-13
Posts: 33

Re: ASUS Chromebook C200MA-DS01

Nothing yet. Last I heard he's still working on them but doesn't have another test image ready.

Offline

#10 2014-12-24 09:43:55

dimonija
Member
Registered: 2014-12-24
Posts: 1

Re: ASUS Chromebook C200MA-DS01

MSC wrote:

Yeah, an Arch equivalent of Chrubuntu is exactly what I was going for, haha. Not a very optimal solution. (by the way, I edited my post with a new version - I just realized that audio doesn't work unless you copy the linux firmware as well)

Could you please go in details and describe how to get audio working? I've copied all firmware files from chromeos to arch, but no luck.

Offline

#11 2014-12-30 16:04:12

MystDisc
Member
Registered: 2014-12-30
Posts: 2

Re: ASUS Chromebook C200MA-DS01

dimonija wrote:
MSC wrote:

Yeah, an Arch equivalent of Chrubuntu is exactly what I was going for, haha. Not a very optimal solution. (by the way, I edited my post with a new version - I just realized that audio doesn't work unless you copy the linux firmware as well)

Could you please go in details and describe how to get audio working? I've copied all firmware files from chromeos to arch, but no luck.

I'm currently running an Arch chroot (chroagh) aswell on my Asus C300 (basically the same as the C200) and since a recent update to chrome OS, my audio has stopped working. Although I know basically nothing about this kind of stuff, I'm assuming there has been a change in how chrome OS handles its audio devices, since my audio in the chroot used to work before the update. Again, this could be a mistake on my end, because I'm not at all familiar with arch and chroots in general.

Offline

#12 2014-12-31 08:21:34

MSC
Member
Registered: 2014-07-13
Posts: 33

Re: ASUS Chromebook C200MA-DS01

I don't remember how exactly I got audio working, but it had to do with enabling some switches on the sound card. Here's my /var/lib/alsa/asound.conf: http://pastebin.com/CZXKYytj
It gives me working headphone output and working internal microphone. To enable speaker output, turn on the "Ext Spk" switch.

I don't think this would apply to running Arch in a chroot though, since IIRC it still uses CRAS for the audio output. Might be something that changed in Chrome OS causing the interface to break.

Offline

#13 2014-12-31 18:05:21

MystDisc
Member
Registered: 2014-12-30
Posts: 2

Re: ASUS Chromebook C200MA-DS01

MSC wrote:

I don't think this would apply to running Arch in a chroot though, since IIRC it still uses CRAS for the audio output. Might be something that changed in Chrome OS causing the interface to break.

Oh sorry, I've always thought that Chrubuntu was a Ubuntu chroot for some reason.

Offline

#14 2015-06-26 10:22:46

jpl888
Member
Registered: 2014-08-01
Posts: 4
Website

Re: ASUS Chromebook C200MA-DS01

Offline

#15 2015-08-09 01:54:15

gr3ggz
Member
Registered: 2015-08-09
Posts: 1

Re: ASUS Chromebook C200MA-DS01

Hello, sorry to UP this topic but I've got one question @MSC if you don't mind smile
Where did you find the screw for the bios protection ?
I have the ASUS c300 and I can't find it.

Thank you for your answer !

Offline

Board footer

Powered by FluxBB