GalliumOS / galliumos-distro

Docs, issues, and artwork sources for GalliumOS
https://galliumos.org/
GNU General Public License v2.0
347 stars 11 forks source link

Braswell Platform Validation #270

Closed reynhout closed 7 years ago

reynhout commented 8 years ago

Tracking validation tests and bug reports for GalliumOS support for Braswell models.

Initial testing on CYAN, but please add observations for any Braswell model in comments!

Current Braswell status

Moved to new tickets:

IMPORTANT NOTE REGARDING AUDIO

Braswell Chromebooks come with one of two audio chips: Maxim 98090 or Realtek ALC5650/5654. There are several reports of hardware speaker failures on models with the Realtek chip. There is a lot more discussion in the comments below.

MrChromebox commented 8 years ago

Working:

Broken:

dmesg: http://paste.ubuntu.com/21235464/

IlIlIlIlIlIlIl commented 8 years ago

Tested USB BOOT on REKS (Lenovo N22) with identical results (keyboard and sound broken).

MrChromebox commented 8 years ago

CYAN user on G+ running Ubuntu 16.10 (a2?) reports that the keyboard is fixed with kernel 4.7

MrChromebox commented 8 years ago

same user as above reports CYAN touchscreen works fine w/Ubuntu 4.7 when CONFIG_ELAN_TOUCHSCREEN is added

lispykid commented 8 years ago

Confirm: Kernel 4.7 brings the keyboard to life. Installed from Ubuntu, though.

lispykid commented 8 years ago

Can anyone point me to the compile flags for Gallium kernel? Then I could build one with the CONFIG_ELAN_TOUCHSCREEN flag and test the screen, too.

MilitaryRiotLab commented 8 years ago

@lispykid https://github.com/GalliumOS/linux/blob/master/.config I am a noob, please don't be harsh if it is wrong EDIT: https://github.com/GalliumOS/linux/blob/baytrail/.config for baytrail (GalliumOS 4.4.6)

lispykid commented 8 years ago

My tiny script to rotate screen on the Acer R11. Useful for tentmode: /\

#!/bin/bash
STATE=`xrandr | grep eDP  | awk '{print $4}'`

if [[ $STATE == *"inverted"* ]]
then 
    xrandr -o normal    
else
    xrandr -o inverted
fi
lispykid commented 8 years ago

Volume and Brightness Keys are working in Ubuntu mainline kernel 4.7, btw.

reynhout commented 8 years ago

@lispykid Thanks, and I'll update the checklist.

Our WIP 4.7.0 kernel config is here: http://paste.ubuntu.com/23078327/

The touchscreen doesn't work yet -- it must require something more than CONFIG_TOUCHSCREEN_ELAN. I've gone through the diffs between Ubuntu and mainline and GalliumOS looking for something missing, but haven't found it yet.

lispykid commented 8 years ago

You tried: modprobe elants_i2c?

reynhout commented 8 years ago

@lispykid No, I don't think so (I don't have the test device)...the driver should load automatically, shouldn't it?

MrChromebox commented 8 years ago

@lispykid there's a dmesg error on boot: elants_i2c: error while waiting for calibration to complete: -110 full dmesg: https://paste.ubuntu.com/23082714

sudo modprobe elants_i2c returns normally.

MrChromebox commented 8 years ago

also, for the keyboard working in 4.7.0-040700-generic (ubuntu) vs not in 4.7.0-galliumos we have:

i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 182 i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp i8042: Warning: Keylock active i8042: probe of i8042 failed with error -22 vs i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 182 i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp i8042: Warning: Keylock active serio: i8042 KBD port at 0x60,0x64 irq 182 fwiw

lispykid commented 8 years ago

Ok, I played with pulseaudio yesterday but had no luck with the headphonejack. Will try wether the HDMI output works, at least the mixer looks like.

I wish I could be more helpful. I reinstalled my R11 yesterday with GalliumOS Testing and Gallium Kernel 4.7 but I don't know what more I could help. It's some years since I last built my own kernel. Maybe I should give it a try again. Can you point me in a good direction for starts?

MrChromebox commented 8 years ago

@lispykid kb/touchpad/touchscreen all work in the Ubuntu 4.7 kernel (recompiled w/CONFIG_ELAN_TOUCHSCREEN=m), so now it's just determining what in the GalliumOS config is breaking things. Audio is a separate issue entirely though

reynhout commented 8 years ago

Internal audio log messages (nonworking), extracted from MrChromebox's dmesg output on Ubuntu 4.7.0 mainline kernel:

[    6.523916] snd_hda_intel 0000:00:1b.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    6.682138] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input8
[    6.682313] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input9
[    6.682459] input: HDA Intel PCH HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input10
[    6.789370] cht-bsw-max98090 cht-bsw-max98090: ASoC: i2c-104C227E:00 not registered
[    6.789381] cht-bsw-max98090 cht-bsw-max98090: snd_soc_register_card failed -517
reynhout commented 8 years ago

4.7.2 kernel parms

(which enable the Maxim MAX98090 audio chip for Bay Trail and Cherry Trail/Braswell, respectively) appear to be mutually exclusive in Kconfig.

We might need to build separate kernels for Bay Trail and Braswell models.

reynhout commented 8 years ago

GalliumOS kernel 4.7.2-galliumos2 includes the following fixes for Braswell models:

Tested on CYAN (Many thanks to @MattDevo!)

If you are having suspend/resume issues, try setting tpm_tis.interrupts=0 in your GRUB kernel config. This will be already be set if you installed from ISO. Some configs might also (or instead) include tpm_tis.force=1, which should be equivalent, but it looks like we'll be preferring tpm_tis.interrupts=0 in future images.

This kernel does not include fixes for Braswell audio.

The new kernel package is currently in the galliumos-testing repodist only. To enable and install:

sudo galliumos-repodist --enable testing
galliumos-update
dh34751 commented 8 years ago

Successfully tested on EDGAR. galliumos-upgrade command was not found, tried galliumos-update instead and that seemed to work.

reynhout commented 8 years ago

@dh34751 Sorry, typo! fixed. Thanks for testing!

mschmortte commented 8 years ago

@dh34751 How did you manage to install GalliumOS on EDGAR? Using chrx I installed GalliumOS but the keyboard isn't working. So I cannot login and upgrade/update. How did you do this?

MilitaryRiotLab commented 8 years ago

@mschmortte I am also using EDGAR (Chromebook 14 CB3-431-C5FM). You need to use an external keyboard to upgrade the kernel

Working:

reynhout commented 8 years ago

@mschmortte Good point. An external keyboard is still needed until we get the updated kernel into a nightly image build. Chrx will install the latest nightly build if it's run with -r nightly. (but again, the "latest" nightly build is still pre-kernel fix. I'll update this when we have a newer build pushed)

EDIT: Nightly images now include the keyboard config and all other patches for Braswell. Audio is still WIP.

@shamkoonyu Awesome. Thanks for the report!

IlIlIlIlIlIlIl commented 8 years ago

tested chrx install with REKS. Same behaviour as with other devices:

mildred commented 8 years ago

Audio initialization seems to be done in the firmware, see kernel bug #151521:

From the discussion over there it sounds to me that Coreboot itself does no sound initialization, but the 'depthcharge' payload started from Coreboot when booting to ChromeOS does do a codec init.

However SeaBIOS payload doesn't do anything sound initialization related so it'd be wished that the kernel would do that instead if it wasn't done by the Coreboot and its payload.

Wouldn't it be possible to use the same boot mechanism as Chromium OS so we get the same initialized state, and stop booting from SeaBIOS?

I'm running some tests in that direction (packing the fedora kernel + initramfs in the kernel signed partition) but I didn't manage to boot yet.

By the way, I'm running Fedora 24 on CYAN, and everything works well except audio and suspend.

MrChromebox commented 8 years ago

Wouldn't it be possible to use the same boot mechanism as Chromium OS so we get the same initialized state, and stop booting from SeaBIOS?

you're misunderstanding the issue; you're getting the "Same initialized state" now regardless of whether you boot ChromeOS via depthcharge or Linux via SeaBIOS. The BSW/CHT drivers in the mainline Linux kernels (4.5+) likely aren't (fully) resetting the codec/DSP properly as part of init, whereas the drivers in the ChromeOS kernel (3.1x) do. Changing the payload isn't going to help - you either need to cut out the init depthcharge is doing (eg, replace the payload like we do with the BOOT_STUB firmware on Baytrail) or fix the mainline kernel drivers.

reynhout commented 8 years ago

@mildred Setting tpm_tis.interrupts=0 in GRUB config has been reported to help with suspend/resume.

IlIlIlIlIlIlIl commented 8 years ago

Most likely it's unrelated, but I just had a massive hardware failure with my REKS / Lenovo N22. Something badly overheated in laptop bag when using GalliumOS and lid suspend, parts of the plastic actually melted. Battery's the likely candidate. Computer works still, but obviously I cannot continue using this fire hazard :)

I'm returning this one and getting another model (Edgar most likely).

reynhout commented 8 years ago

@IlIlIlIlIlIlIl Yikes! Well, EDGAR has less plastic to melt if you get another bad battery :)

aguitel commented 8 years ago

running fedora 24 mate edition in live mode ,device samsung 3 celes only sound not working

reynhout commented 8 years ago

@aguitel Do suspend/resume work on Fedora 24? AFAIK we have everything working now on the GalliumOS kernel except audio and suspend/resume.

mildred commented 8 years ago

I couldn't get suspend resume working on Fedora 24. Kernel option didn't work. Closing the lid seems to put the computer in a blocked state with the screen turned off, the only solution then is to force halt the machine ly a long press on the power button.

It forces me to close my session, not so bad considering I have the habit of leaving everything open and it adds up.

aguitel commented 8 years ago

suspend and resume works in samsung 3 celes with fedora 24 kernel 4.5 series try to install kernel 4.7 series but the device not boot and i remove this 4.7 kernel remains 4.5 only

dh34751 commented 8 years ago

Suspend / resume test results for EDGAR, Acer Chromebook 14 CB3-431. Works with Mint 18 using Ubuntu 4.7.4 kernel and all updates applied through today. Works with Fedora 24 using 4.7.3 kernel and all updates applied through today.

As expected, only the hdmi sound device is configured. I'm waiting until the 4.8 kernel gets closer to release quality to try it to see if the rumor is true that sound is fixed with that kernel. Maybe two more weeks before this happens.

robeastham commented 8 years ago

Most likely it's unrelated, but I just had a massive hardware failure with my REKS / Lenovo N22. Something badly overheated in laptop bag when using GalliumOS and lid suspend, parts of the plastic actually melted. Battery's the likely candidate. Computer works still, but obviously I cannot continue using this fire hazard :)

This happened to me withy my UK REKS / Lenovo N22 too! Luckily it was on my desk and I smelt the burning plastic. Ended up warping the case in two points, on either side of the trackpad, before I switched it off. I had a Kingston USB 3 plugged in the right port and a Toshiba USB 2.0 in the left port. I think it was just on the Legacy Boot menu screen when this happened. Think it took about an hour to get up to the temperature high enough to melt the case. Seems okay now, actually recharged it whilst keeping a close eye on it. I cannot reproduce the issue. I haven't sent mine back yet, but prudence would dictate that it would be wise to do so.

I now wonder if this is related to something we both have done whilst trying to duel boot. One report could be coincidence, but two sounds like something is going on.

paldepind commented 8 years ago

@robeastham What is the temperature normally like with GalliumOS on the N22? I have an N22 but haven't tried dual booting it yet. With ChromeOS the laptop is running very cool for me. I can barely feel any warmth under normal usage.

IlIlIlIlIlIlIl commented 8 years ago

@paldepind When I used GalliumOS I didn't notice any difference on running temperature compared to Chromeos. My n22 was also very cool always.

@robeastham Two failures seems that there's something going on. I didn't have any USB devices plugged in. The plastic melted from bottom left and right corners and also from one spot under the laptop. I'll post pics when I'm home, I still haven't returned it but have returned it to stock condition already. (Edit: pics of the damage http://imgur.com/a/fbWe1)

Did you remove the firmware write protect screw?

robeastham commented 8 years ago

@paldepind Has been really cool when running standard ChromeOS. I could not successfully get it to boot GalliumOS so not sure what the temperature would have been. I've not successfully booted any desktop environment and so most times I was in Legacy mode I was just on the boot prompt or at the shell (e.g. for Alpine). I think when it got hot it was just sitting waiting for me to pick a boot device after I'd pressed the key to select it. But this only happened once whilst it was idle.

I've had trouble with other distros on the N22 in legacy mode ( “Error setting up gfxboot” for Manjaro) and struggled with Alpine, but I think Alpine looked promising and the failure was unfamiliarity with Alpine rather than anything else. Going to try Arch vanilla before I send it back. Still keen to see what sort of performance I get on this CPU when booting off bare metal.

@IlIlIlIlIlIlIl I did open it up to see if I could add more memory when I first bought it. But don't recall intentionally removing any firmware screws. Just the ones required to remove the bottom plate on the case.

The warping to the case on my machine is in exactly the same two spots as your pictures but just on the upper side and to a lesser extent. I didn't back up the stock firmware after installing the Mr. Chromebox one and so need to figure out how to get it back to stock before I send it back.

Seems really odd, I mean surely even with a custom firmware this should not happen?

anorom commented 8 years ago

Appreciate all the hard work! Confirmed functional keyboard and touchscreen on CYAN w/ testing 4.7.2 kernel.

MrChromebox commented 8 years ago

I didn't back up the stock firmware after installing the Mr. Chromebox one and so need to figure out how to get it back to stock before I send it back.

there was nothing to back up, the RW_LEGACY firmware region is empty on the stock firmware for all Braswell Chromebooks. If you want to clear it out though, simply use Recovery Mode/recovery media to put everything back to stock.

mildred commented 8 years ago

Is someone working on making the sound work? If so, what should be done? I see the kernel bug hasn't been updated in a while. From the last message, they seem to be waiting on the SeaBIOS to implement things, but I doubt they are going to do anything because there is no hardware initialization on their side of things.

elquad commented 8 years ago

Hey, greetings from cyan! I installed the newest galliumos-baytrail and after kernel upgrade to 4.7.2-galliumos, everything seems to work (besides the sound). Even the suspend works without any issues. Thanks for all the work, and if there's any testing I can help with, happy to do so!

reynhout commented 8 years ago

@elquad Interesting, your CYAN is suspending/resuming properly on the 4.7.2-galliumos2 kernel? Have you added any other config that might be related? If we can isolate the differences, that could be a huge help toward resolving the issue.

@mildred It does look like audio is going to require some deeper research and ultimately a kernel patch. We will be watching the upstream traffic as well -- we have no Linux audio experts on the team, though a few of us have spent a lot of time working toward a level of general familiarity. :) If you come across any other references or progress info, please add to this ticket.

mildred commented 8 years ago

On the chromium tree, sound initialization is probably done in src/third_party/kernel/v*/sound/soc/codecs/ts3a227e.c and src/third_party/kernel/v*/sound/soc/intel/boards/cht_bsw_max98090_ti.c (it greps 104C227E, the I2C device that didn't get created). It is registred in ACPI in src/third_party/coreboot/src/mainboard/google/cyan.

view sources

dh34751 commented 8 years ago

Out of curiosity, I tried putting the 4.8.0-rc7 Ubuntu build kernel on my Edgar Acer CB3-431 Mint 18 install, and disappointingly sound still did not work with only the hdmi interface showing up. This probably means that the final 4.8.0 kernel won't be any different.

mildred commented 8 years ago

@dh34751 perhaps you can try the chromiumos kernel. If I have time, I'll try to see if it fixes the sound problem.

MrChromebox commented 8 years ago

@mildred the audio init in the ChromeOS 3.x kernels is completely different than the mainline 4.x ones, so not particularly useful as a point of comparison. The Chromium 4.4 kernel seems to be the 4.4 mainline kernel with few audio-related changes (outside of the inclusion of the cht-bsw-max98090 driver, which is unchanged from the mainline 4.5+ kernel). While we appreciate the suggestions, this is all stuff we've already looked at.

elquad commented 8 years ago

@reynhout I'm not aware of any extra configuration that might have effect on this... Only enabled prerelease and testing repos, did full update and switched the kernel to 4.7.2. Attaching dmesg output. dmesg.txt

robeastham commented 8 years ago

Wondering if anyone is concerned about the two reports of melting Lenovo N22's? See both mine and @IlIlIlIlIlIlIl experiences above.

Can I ask again? Should modifying the bios make this even a remote possibility? I guess in theory it could be possible to do something like this maliciously. I'm not suggesting, even for a second, that anyone in the chrome mod community has done anything malicious. However if this overheating is caused by a bug in the firmware code that people are installing then I think it'd be worth discussing and deciding what to do about it...