kitakar5525 / chromeos-kernel-linux-surface

linux-surface kernel for chromiumos.
GNU General Public License v3.0
18 stars 1 forks source link

wifi/bt unstable when using with iwl7000 #17

Open thorstenludwigs opened 4 years ago

thorstenludwigs commented 4 years ago

First thanks a lot for your work and effort. I managed to get my Surface Pro 7 going with your kernel.
Wifi and Bluetooth are not working correctly, I tried different firmware for this card. Wifi is slow and doping out. I have the same laptop running with Arch Linux (Kernel 5.6.11) no problems.

Is there a specific surface 3 fix what you applied, so if I build the kernel a can maybe remove them?

kitakar5525 commented 4 years ago

Hi! I'm glad to hear that you tested 5.4 series on the latest hardware.

It turned out that chromiumos has its own module called iwl7000, which supports hardware similar to that supported by iwlwifi. And we can't enable both at the same time. Related commits:

So, I'm glad if we can get wifi working well with the iwl7000.

To do so, first, I'm glad if you can post here dmesg log obtained right after reboot (dmesg -x)

kitakar5525 commented 4 years ago

Is there a specific surface 3 fix what you applied, so if I build the kernel a can maybe remove them?

There is a lot of patches applied for mwifiex, which is used on below SP7 generations (https://github.com/kitakar5525/linux-surface-kernel/commits/chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch), but should not affect your wifi/bt functionality. SP7 generation devices use iwlwifi (not sure what's used about bt yet)

kitakar5525 commented 4 years ago

By the way, have you tried 4.19 LTS kernel on Arch Linux ? Does it boot on your SP7 ?

Edit: you might already know but linux-surface releases prebuilt binary for 4.19 LTS kernel: https://github.com/linux-surface/linux-surface/releases/tag/arch_lts-4.19.114

thorstenludwigs commented 4 years ago

Hi Yes, i have tried all versions 4.19 wold not run (i915 problems), and the only version 5.6 is perfect. I had either a problem with wifi or gfx until 5.6, to be honest.

I installed this firmware iwlwifi-Qu-48.13675109.0.tgz Intel® wifi 6 AX201 160MHz, but I have tried different versions.

I have attached the dmesg.txt output. Both are working right now only Wifi freeze all the time.

dmesg.txt

Thanks in advanced !

kitakar5525 commented 4 years ago

Hmm, it seems that you tried even the latest firmware

[ 36.225874] iwlwifi 0000:00:14.3: loaded firmware version 48.13675109.0 Qu-c0-hr-b0-53.ucode op_mode iwlmvm

So, this is maybe not a firmware issue.

Do you know if the current latest Arch Linux linux-lts (5.4.40-1) works well now? if so, I can update kernel config to use iwlwifi instead of iwl7000. But I guess the chance is low, though.

thorstenludwigs commented 4 years ago

Hmmm yes, that is a tough one. I will install the stock kernel 5.4.40-1 on Arch and see how that goes. I will let you know when if it runs any good.

thorstenludwigs commented 4 years ago

Hi, I tested kernel 5.4.40 (Linux tlnb 5.4.40-1-lts #1 SMP Sun, 10 May 2020 10:44:18 +0000 x86_64 GNU/Linux) Everything seems to work except obvious touchscreen and battery indicator (No Surface patches).

I will test your kernel on a Surface Book 2 let's see if wifi is ok there.

I'll attach the dmesg dmesg_arch-5.4.40-1.txt

kitakar5525 commented 4 years ago

Thanks for the info. I published two testing binary releases.

The iwl7000_core52-81 one contains updated iwl7000 driver. The no_iwl7000 one uses iwlwifi rather than iwl7000.

So, if Arch Linux 5.4.40 works well, the no_iwl7000 one should also work. I'm curious if the iwl7000_core52-81 one works well.

kitakar5525 commented 4 years ago

Leaving note here.

iwl7000 related chromiumos commits:

iwl7000 repo location:

Linux wireless wiki for iwlwifi:

thorstenludwigs commented 4 years ago

Thanks for your effort! *chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch+no_iwl7000 Wifi works fine now, and only Bluetooth won't connect my mice. Maybe a firmware issue.

*chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch+iwl7000_core52-81 Wifi doesn't work.

I will tomorrow try to get Bluetooth working.

kitakar5525 commented 4 years ago

I thought iwl7000 used in chromeos is new enough. The chance is that... firmware you use is too new?

The latest brunch has the two firmware versions:

Have you tried -48 one? If so, verified that you're actually using -48 one? (by something like this: dmesg | grep "Qu-c0-hr-b0")

If not, please try the following on iwl7000_core52-81 one: the newer (-50 one) firmware takes precedence. So,

  1. remove or rename iwlwifi-Qu-c0-hr-b0-50.ucode and any newer firmware files
  2. (maybe reboot is needed?)
  3. verify that you're now using iwlwifi-Qu-c0-hr-b0-48.ucode dmesg | grep "Qu-c0-hr-b0"
thorstenludwigs commented 4 years ago

Hi and once again thanks for your help! Wifi and Bluetooth are working now! I used wlwifi-Qu-c0-hr-b0-48.ucode all the time I renamed it to 52. The surface book needs to be turned off for a couple of minutes to work properly.

I used : chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch+no_iwl7000 /Firmware directory from my Arch Linux instalation Brunch r81 k4.19 stable 20200510

-Create a brunch usb -Mount /dev/sdX/7 of the brunch usb -Extract kernel chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch+no_iwl7000 somewhere, -Copy kernel package to /kernel -Extract modules.tar.gz into the directory /lib/ -Remove /lib/backpot* otherwise firmware file will not fit -Copy Firmware files to /lib/firmware/ -Unmount /dev/sdX/7

As for Bluetooth: I have to pair the devices manual with shell commands, and this did the trick Ctrl+Alt+t bt_console pair xx:xx:xx:xx:xx:xx

To get reboot working, I had to add this kernel parameter to grub: reboot=pci

I tried this configuration on my Surface Book 2 it ist stuck with a boot loop when the google logo appears

kitakar5525 commented 4 years ago

The surface book needs to be turned off for a couple of minutes to work properly.

I tried this configuration on my Surface Book 2 it ist stuck with a boot loop when the google logo appears

Are both sentences about Surface Book 2? or you really have both SB1 and SB2? Regarding the boot loop, as mentioned on the release page, installing the other version of kernel then reinstall the kernel you want to use may resolve this issue. (Maybe what really fixed the issue in my case is rebuilding rootfs (?) I also use brunch.)

kitakar5525 commented 4 years ago

regarding wifi/bt on SP7/SL3

So, using iwlwifi instead of chromiumos iwl7000 fixed stability. Using iwl7000 causes wifi/bt instability regardless of firmware version.

I'll keep including iwlwifi instead of the iwl7000 for the time being.

That said, the most desirable fix is improving iwl7000 stability. So, let's keep this issue open. I may ping you @thorstenludwigs in the future when something is done to the iwl7000.

EDIT: I won't enable iwlwifi for 4.19 builds because iwlwifi on 4.19 is too old and SP7/SL3 wifi/bt are not supported there. Instead, iwl7000 supports better there.

kitakar5525 commented 4 years ago

Regarding bt pairing

I also encounter paring is not so smooth on SB1/Surface3, which uses mwifiex driver rather than iwlwifi/iwl7000. For me, pairing takes a long time, but after waiting for a certain amount of time, it connects to a bt device eventually.

So, this issue is probably a common one.

kitakar5525 commented 4 years ago

Changed the title to better reflect the current situation

thorstenludwigs commented 4 years ago

Hi -Are both sentences about Surface Book 2? The surface pro 7 needs to be turned off for a couple of minutes to work properly. Sorry

The SB3 just boot loops, it runs best with 4.19 Kernel.

As for the 4.19 Kernel, I never got it running with Arch Linux or Debian on the Surface Pro 7. GFX, wifi, bt, crashes and so on.

I'm happy to test a new version with improved iwl7000 drivers. I'm also happy to debug further problems.

As for ChromeOS, I'm pretty new to it. But it is so much improved from the version I teste 2-3 years ago.

kitakar5525 commented 4 years ago

I'm happy to test a new version with improved iwl7000 drivers. I'm also happy to debug further problems.

OK, thanks!