xmm7360 / xmm7360-usb-modeswitch

Tools for the Fibocom L850-GL / Intel XMM7360 LTE modem
121 stars 21 forks source link

Working Laptop/Modems #10

Open kernelnick opened 4 years ago

kernelnick commented 4 years ago

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 commented 4 years ago

Same for X1 Yoga 4th Gen running Void Linux.

marcvernet commented 4 years ago

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

kopax commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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

kopax commented 4 years ago

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 commented 4 years ago

Yes, I meant in addition to disabling secure boot.

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

kopax commented 4 years ago

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 commented 4 years ago

l850-gl

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

kopax commented 4 years ago

I can format back to windows =/ Should I ?

marcvernet commented 4 years ago

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

marcvernet commented 4 years ago

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

kopax commented 4 years ago

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 commented 4 years ago

Just to chime in, in Windows every time different a different sim card in it seemed to reflash the modem each time (possibly for setting the LTE bands of that particular operator for optimisation?). Maybe there is some initial activation done in Windows too.

On Tue, 29 Oct 2019 at 21:37, Dimitri KOPRIWA notifications@github.com wrote:

I can format back to windows =/ Should I ?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/abrasive/xmm7360/issues/10?email_source=notifications&email_token=AF7UH72F4LPHV3W56ANMXSDQRAG4ZA5CNFSM4JFWJUD2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECQAKDI#issuecomment-547357965, or unsubscribe https://github.com/notifications/unsubscribe-auth/AF7UH764ILQJOTJD4E7KNTTQRAG4ZANCNFSM4JFWJUDQ .

marcvernet commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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

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

kopax commented 4 years ago

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 commented 4 years ago

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

kopax commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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

VINTX2 commented 4 years ago

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 commented 4 years ago

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

VINTX2 commented 4 years ago

@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 commented 4 years ago

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 commented 4 years ago

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 commented 3 years ago

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 commented 3 years ago

@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 :smiley:)

  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 commented 3 years ago

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 commented 3 years ago

@mlukow https://github.com/xmm7360/xmm7360-usb-modeswitch/blob/5ebf6862c1331482f13471d9257c4d8fbb01f811/xmm2usb#L37 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...