Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Working Laptop/Modems #10

Open
kernelnick opened this issue Oct 28, 2019 · 36 comments
Open

Working Laptop/Modems #10

kernelnick opened this issue Oct 28, 2019 · 36 comments

Comments

@kernelnick
Copy link

kernelnick commented Oct 28, 2019

Hi all,

Not sure if helpful for anyone

I can confirm that this currently works on: Carbon X1 Gen 6 20KH-CT01WW (Fibocom L850-GL)
Running Arch, just followed readme (except acpi_call was in repos, so just installed from there)

@Gottox
Copy link
Contributor

Gottox commented Oct 28, 2019

Same for X1 Yoga 4th Gen running Void Linux.

@marcvernet
Copy link

Works on Thinkpad X1 Carbon 7th gen with Fibocom L850-GL. I'm running KDE Neon (User edition)

@kopax
Copy link

kopax commented Oct 28, 2019

Works on Thinkpad X1 Carbon 7th gen with Fibocom L850-GL. I'm running KDE Neon (User edition)

Hi @marcvernet I am curious, I also have a X1 Carbon Gen 7.

What did you get with lsusb, I had :

root@dka:/home/kopax/workspace/tmp/xmm7360# sudo ./xmm2usb 
Found XMM7360 modem at 0000:02:00.0 (\_SB_.PCI0.RP01.PXSX)
Parent port is at 0000:00:1c.0
Disabling PCIe link...
OK!
root@dka:/home/kopax/workspace/tmp/xmm7360# lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 04f2:b67c Chicony Electronics Co., Ltd 
Bus 001 Device 006: ID 17ef:a351 Lenovo 
Bus 001 Device 003: ID 04b4:0510 Cypress Semiconductor Corp. 
Bus 001 Device 002: ID 1af3:0001  
Bus 001 Device 005: ID 8087:0aaa Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

While the README says:

After 5-10 seconds, your new USB device should appear.

Nothing appear for me, I am on cinnamon where should I expect?

My modem came up initially as a 3x ACM + 3x NCM USB device

That doesn't really is an example of expected result

@marcvernet
Copy link

marcvernet@marcvernet-ThinkPad-X1-Carbon-7th:~$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 06cb:00bd Synaptics, Inc.
Bus 001 Device 002: ID 04f2:b67c Chicony Electronics Co., Ltd
Bus 001 Device 014: ID 2cb7:0007
Bus 001 Device 004: ID 8087:0aaa Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

However, KInfocenter reports the modem as MBIM + 3 CDC-ACM after I had issued the AT commands in the README.

Also, I had issues with suspend/resume so I've now compiled and installed the kernel module version https://github.com/juhovh/xmm7360_usb

@kopax
Copy link

kopax commented Oct 29, 2019

marcvernet@marcvernet-ThinkPad-X1-Carbon-7th:~$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 06cb:00bd Synaptics, Inc.
Bus 001 Device 002: ID 04f2:b67c Chicony Electronics Co., Ltd
Bus 001 Device 014: ID 2cb7:0007
Bus 001 Device 004: ID 8087:0aaa Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

We seems to have almost the same, my lenovo device as been trade to Synaptics, that's a good news, because I don't think it is the modem.

However, KInfocenter reports the modem as MBIM + 3 CDC-ACM after I had issued the AT commands in the README.

I have installed kinfocenter , run the sudo ./xmm2usb and nothing appear in the kinfo center:

image

I had issued the AT commands in the README.

I did not had the opportunity to issues AT commands, because sudo screen /dev/ttyACM0 does not find the file.

Also, I had issues with suspend/resume so I've now compiled and installed the kernel module version https://github.com/juhovh/xmm7360_usb

I could have a try, how did you compiled & installed that module ?

Also, I had issues with suspend/resume so I've now compiled and installed the kernel module version https://github.com/juhovh/xmm7360_usb

@marcvernet
Copy link

I installed it as per the README.

However, I did have issues with a missing certificate 'signing_key.pem' which was preventing me from installing. I created this in /usr/src/linux-headers-5.0.0-32-generic/certs.

I could then modprobe the module.

It certainly works better in that the modem is now available instantly when I boot the laptop but it doesn't always return when coming out of suspend.

@kopax
Copy link

kopax commented Oct 29, 2019

I have tried to follow the instruction in the README, and I still can't issue AT commands.

root@dka:/home/kopax/workspace/tmp/xmm7360_usb# make
make -C /lib/modules/4.19.0-6-amd64/build M=/home/kopax/workspace/tmp/xmm7360_usb modules
make[1]: Entering directory '/usr/src/linux-headers-4.19.0-6-amd64'
sudo  Building modules, stage 2.
  MODPOST 1 modules
make[1]: Leaving directory '/usr/src/linux-headers-4.19.0-6-amd64'
root@dka:/home/kopax/workspace/tmp/xmm7360_usb# sudo make install
make -C /lib/modules/4.19.0-6-amd64/build M=/home/kopax/workspace/tmp/xmm7360_usb modules_install
make[1]: Entering directory '/usr/src/linux-headers-4.19.0-6-amd64'
  INSTALL /home/kopax/workspace/tmp/xmm7360_usb/xmm7360_usb.ko
  DEPMOD  4.19.0-6-amd64
Warning: modules_install: missing 'System.map' file. Skipping depmod.
make[1]: Leaving directory '/usr/src/linux-headers-4.19.0-6-amd64'
root@dka:/home/kopax/workspace/tmp/xmm7360_usb# sudo modprobe xmm7360_usb
root@dka:/home/kopax/workspace/tmp/xmm7360_usb# sudo screen /dev/ttyACM0
[screen is terminating]

Does that means that my fibocom will not work ?

Also, the first think I have done when receiving the x1c7 before doing this was to upgrade my BIOS. Some people on IRC says that it has nothing to do but just to be sure, did you upgrade your BIOS or did you do this straight after receiving the x1c7?

@marcvernet
Copy link

I'm not sure why it's not working for you. I can confirm that my BIOS is the latest 1.22.

I'm not sure if this is relevant but I did not make the acpi_call module but installed it from a repo instead sudo apt install acpi-call-dkms

@kopax
Copy link

kopax commented Oct 29, 2019

I'm not sure why it's not working for you. I can confirm that my BIOS is the latest 1.22.

Thanks a lotr for that information, I am also using 1.22 from 2019-10-04, so that's not the issue.

I'm not sure if this is relevant but I did not make the acpi_call module but installed it from a repo instead sudo apt install acpi-call-dkms

I used to install acpi-call-dkms but wasn't sure if working, I will try now again with it.

Did you modify anything in the BIOS except disabling secure boot?

@marcvernet
Copy link

The only other thing I changed in the BIOS was to set the sleep mode to LINUX.

@kopax
Copy link

kopax commented Oct 29, 2019

Using acpi-call-dkms does not help the device getting recognized by USB.

You did not have to disable secure boot? Because I was having an issue with it when using lcpi_call, some not recognized key.

Then I assume it can't work for mine, I will open the laptop to take a pictures of the M2 card.
If you ever get the occasion to see the inside, could you do the same please ?

@marcvernet
Copy link

Yes, I meant in addition to disabling secure boot.

Sure, I'll take a picture for you...

@kopax
Copy link

kopax commented Oct 29, 2019

Sure, I'll take a picture for you...

Thanks a lot, that's not only for me, that's for people with the same hardware so they can also troubleshoot, it's only 5 screw to open the bottom, this is mine:

image

I am just thinking but how can I be sure that the card was working? Perhaps it's a factory issue I have with the hardware and I only need to return to lenovo. How can I be so sure that it should work?

@marcvernet
Copy link

l850-gl

Perhaps there is an issue with your card. Can you boot into windows to see if it works?

@kopax
Copy link

kopax commented Oct 29, 2019

I can format back to windows =/ Should I ?

@marcvernet
Copy link

Only you can answer that..... But you need to find out if the card is actually working.

@marcvernet
Copy link

We seem to have the same hardware and it works for me. However, I have a more recent linux kernel.

@kopax
Copy link

kopax commented Oct 29, 2019

Only you can answer that..... But you need to find out if the card is actually working.

I am preparing a bootable key with windows 10, I'll let you know

We seem to have the same hardware and it works for me. However, I have a more recent linux kernel.

What kernel version are you using? How do you know my kernel version?

@kernelnick
Copy link
Author

kernelnick commented Oct 29, 2019 via email

@marcvernet
Copy link

What kernel version are you using? How do you know my kernel version?

I can see your kernel version in the output from the make command you posted earlier. My kernel is 5.0.0-32.

I can also confirm that I've never activated or used the modem under windows. I removed the FCC lock using the instructions in the README.

@kopax
Copy link

kopax commented Oct 29, 2019

I can see your kernel version in the output from the make command you posted earlier. My kernel is 5.0.0-32.

I have tried to upgrade my kernel using Buster backports to v5 and that didn't help

I can also confirm that I've never activated or used the modem under windows. I removed the FCC lock using the instructions in the README.

Did you use windows to remove the FCC Lock ? I have not done anything for that, I tought you needed to have the device detected first. Perhaps this is the cause of my device not being detected?

@marcvernet
Copy link

It's not why your device is not being detected. Using the instructions...

  • I switched the modem to USB mode

  • Issued AT commands to switch to MBIM mode (The modem then shows up in network manager)

  • Issued AT commands to remove FCC lock (enabled me to create an LTE connection)

All of this was done in linux. The laptop has never run Windows.

@kopax
Copy link

kopax commented Oct 29, 2019

I did the same think but fail to switch to USB mode.... There's something different with my X1C7 or the WWAN card is broken even on windows, I am testing it now.

How can I test the USB detected working? Can you screenshot the relevant part in KInfoCenter so I have a valid expected result?

@marcvernet
Copy link

Once you've put it into MBIM mode it should show up like this...
Screenshot_20191029_111708

@kopax
Copy link

kopax commented Oct 30, 2019

Thanks a lot, I was able to solve it by restarting from scratch and finally git the X1 Carbon Gen 7 with WWAN!

@TT-ZX
Copy link

TT-ZX commented Nov 7, 2019

Works on my P53s (20N6CTO1WW, L850-GL). Had to remove the FCC lock as per instructions provided. Thanks a lot for your work on this. I was disappointed when I couldn't get the WWAN working on my new laptop, but now I'm happy again!

@gmtx24
Copy link

gmtx24 commented Dec 16, 2019

Works on my T480s (20L7CT01WW) running Arch. Thank you for your great work!

@VINTX2
Copy link

VINTX2 commented Mar 31, 2020

I did not had the opportunity to issues AT commands, because sudo screen /dev/ttyACM0 does not find the file.

@kopax How did you manage to fix that? I have the same issue.

@kopax
Copy link

kopax commented Mar 31, 2020

@Mikail0 I had to reformat and be more careful on all steps and I finally get through.

@VINTX2
Copy link

VINTX2 commented Mar 31, 2020

@Mikail0 I had to reformat and be more careful on all steps and I finally get through.

Thank you @kopax
Did you use https://github.com/xmm7360/xmm7360-usb-modeswitch
or
https://github.com/juhovh/xmm7360_usb

and on which distro?

@kopax
Copy link

kopax commented Apr 1, 2020

I have used this https://github.com/juhovh/xmm7360_usb since it persist after reboot,

My distro is Debian, it work with debian latest. You are welcome.

@kikuchan
Copy link

Works on ThinkPad X280 (20KF-CTO1WW, L850-GL)

It also works on FreeBSD with translated following commands (in my case)

# pciconf -wh pci0:0:29:0 0x50 0x0052
# kldload acpi_call      (sysutils/acpi_call)
# acpi_call -p '\_SB_.PCI0.RP09.PXSX._RST'

(MBIM is not supported on FreeBSD yet, so I use ppp to connect btw)

Thank you for the great information! I really appreciate it.

@mlukow
Copy link

mlukow commented Jul 7, 2021

hey @kikuchan how did you get the modem to work on FreeBSD? I have to admit i'm struggling, maybe because FreeBSD isn't really my thing. Could you share your config files, and maybe a short description of the whole process? Tried to pciconf my card but it keeps saying that the write failed 🤷

@kikuchan
Copy link

@mlukow Hi. I'm not sure it works for you, but I'll try the best.

  1. Find your modem by using the command pciconf -l | grep 0x7360

It will print something like:

none4@pci0:61:0:0:      class=0x0d4000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x7360 subvendor=0x8086 subdevice=0x0020

In this case, the value 61 denotes pci bus.

  1. Find your PCI bridge contains the bus by using the command pciconf -lB

You'll find something like:

pcib3@pci0:0:29:0:      class=0x060400 rev=0xf1 hdr=0x01 vendor=0x8086 device=0x9d18 subvendor=0x17aa subdevice=0x2256
    bus range  = 61-61
    window[1c] = type I/O Port, range 16, addr 0xf000-0xfff, disabled
    window[20] = type Memory, range 32, addr 0xdc000000-0xdc0fffff, enabled
    window[24] = type Prefetchable Memory, range 64, addr 0xfffffffffff00000-0xfffff, disabled

The bus range contains 61, so it means the device must be your modem's parent device.
Write down its address pci0:0:29:0.

  1. Send the magic command to the parent device by using pciconf
pciconf -wh <the_address> 0x50 0x0052

It disables PCIe link (according to the xmm2usb 😃)

  1. Find a path for the acpi

I'm sorry I don't know how to find it precisely, but I hope acpidump -dt helps.
Some devices have a function _RST, one of them must be the one.

  1. Call the function by using acpi_call
acpi_call -p <the_path>

After a few seconds, umodems appear in /var/log/messages, if everything goes correct.

Jul 13 19:21:19 xxx kernel: ugen0.11: <vendor 0x8087 product 0x07f5> at usbus0
Jul 13 19:21:20 xxx kernel: ugen0.11: <vendor 0x8087 product 0x07f5> at usbus0 (disconnected)
Jul 13 19:21:27 xxx kernel: ugen0.11: <Fibocom MBIM + 3 CDC-ACM> at usbus0
Jul 13 19:21:27 xxx kernel: umodem1 on uhub0
Jul 13 19:21:27 xxx kernel: umodem1: <CDC ACM> on usbus0
Jul 13 19:21:27 xxx kernel: umodem1: data interface 3, has CM over data, has break
Jul 13 19:21:27 xxx kernel: umodem2 on uhub0
Jul 13 19:21:27 xxx kernel: umodem2: <CDC ACM> on usbus0
Jul 13 19:21:27 xxx kernel: umodem2: data interface 5, has CM over data, has break
Jul 13 19:21:27 xxx kernel: umodem3 on uhub0
Jul 13 19:21:27 xxx kernel: umodem3: <CDC ACM> on usbus0
Jul 13 19:21:27 xxx kernel: umodem3: data interface 7, has CM over data, has break

I hope it works on your side. Good luck!

@mlukow
Copy link

mlukow commented Jul 26, 2021

whoa, amazing @kikuchan, thanks for your time :-) was just wondering how to figure out what to acpi_call. The thing is that my acpidump doesn't show anything worthwhile (no RST or anything). I booted into live ubuntu and ran the original xmm2usb, looks like the method name's supposed to be \_SB_.PCI0.RP01.PXSX, but when i call it, it says it can't set property 0 or something similar 🤔

@kikuchan
Copy link

@mlukow

printf "%s" "${acpi_path}._RST" > /proc/acpi/call || \

As you can see, it just appends ._RST to ${acpi_path} when executing the ACPI, so I thought it would be in the output of acpidump -dt.
But you're right, if you can ran Ubuntu and the original xmm2usb command, you can simply use the output of them.
In your case, acpi_call -p '\_SB_.PCI0.RP01.PXSX._RST' would be the one.
If you still get an error, let's make sure the original xmm2usb works properly on your device...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants