issue with netcard of dock gen2 of lenovo l390
-
@george1421 said in issue with netcard of dock gen2 of lenovo l390:
@JJ-Fullmer The r8152.c from the torvalds github site failed to compile on 4.19.65, I’m suspecting its for a later release of linux. The version from the torvalds site was 1.10.10. The version in 4.19.65 was 1.9.9 of the realtek driver.
I was able to compile the realtek driver from the wget github site. This version is 2.12. Here is a link to that kernel with the 2.12 driver built in. I also enabled the usb-c code in the kernel that appears to have not been set. I don’t know if its relevant, but it should be on for other applications. https://drive.google.com/open?id=1wZwwOwbEr0nR3mnPLKg7AsulwJaGhO0A
Download this as bzImageRT (watch your case) and copy it to the ipxe directory with the other kernel images. Manually register the host and then in the host definition add in bzImageRT as the kernel for that host. Then pxe boot into FOS Linux debug mode to see if the network adapter inits correctly with this updated driver.
@jps Please give @george1421’s kernel a try, see if that fixes your problems.
-
@george1421 I posted your solution on two other posts that appear to be related issues
https://forums.fogproject.org/topic/13203/l390-yoga-lenovo
https://forums.fogproject.org/topic/13909/can-t-find-network-interface-kernelThere they are for reference for anyone finding this or those in the future.
-
@Developers here is what I did
-
Probably not related to the issue at hand. Enabled usb-c support in the kernel. The kernel was 4.19.65
enable_usb-c.patch.txt -
I downloaded the 2 files from this url: https://github.com/wget/realtek-r8152-linux and copied them to
linux-4.19.65/drivers/net/usb/
overwriting what was there (note I appended .txt to allow uploading to the forum).
r8152.c.txt
compatibility.h.txt -
Recompiled the kernel using the 1.5.7 base config file from the fos github site.
-
-
@george1421
I would probably bet that adding usc-c support helped more than we know. I’ve just never had this good of an experience with a usb-c adapter and fog. Just my 2 cents.Do you see any reason that one shouldn’t use this kernel for all devices?
Also, another side note to my Fellow Lenovo L390 owners. If you set the Mac Address Passthrough option in the bios to “Second Mac Address” you can get a unique mac address for each device that uses that usb-c adapter or dock to image with fog so you won’t have issues with duplicate macs. However if you set it to “Internal Mac Address” it replicates the internal card which confuses ipxe that there are 2 network cards with the same mac address and it tries a ‘net0’ device twice failing both times.
-
@JJ-Fullmer said in issue with netcard of dock gen2 of lenovo l390:
Do you see any reason that one shouldn’t use this kernel for all devices?
There is no reason why you shouldn’t use this kernel. This is exactly the same kernel that ships with FOG 1.5.7 with the exception of the updated realtek driver and adding in the usb-c stuff.
I started with the default FOS Linux settings for 1.5.7 and made the changes I posted. This was done so that the devs could duplicate what was done during our testing.
I’ve just never had this good of an experience with a usb-c adapter and fog
It would be interesting to see if your experiences with usb-c change with this kernel.
-
@george1421 I’m making it my default kernel now then, I backed up the old one of course. I’ll report back if there are any problems, but I would assume all will work as expected.
-
@george1421 so some odd things to report with the new kernel as the default…
One almost plus, I found that an acer switch 3 recognized the lenovo usb-c ethernet adapter as one that could pxe boot. It even almost worked but it is now frozen atipxe initialising devices...
In the past, no usb-c ethernet adapter would do a native pxe boot on this device, so that’s something. I guess I still don’t have one that will do a pxe boot.I went to image a new surface go with the microsoft usb-c ethernet adapter that was working in the past.
I got this message after pxe boot completed and FOS was starting…
Sorry that it’s blurry, basically it says that the kernel is probably missing the correct driver. Doesn’t make a ton of sense that the fix for one usb-c ethernet adapter would break another. It isn’t impossible that microsoft’s adapter also uses a realtek chip and this chip doesn’t like the new driver. Why can’t they all just get along?
I will try testing the old kernel and other things tomorrow.
-
@george1421 I did do a test on a normal device (intel ethernet desktop type) and it did boot to the fog menu and started an image deploy without a problem on the new kernel. I set the surface go to use the old kernel (I have so many now I’m not actually 100% sure which one it is, but pretty sure its the one that shipped with 1.5.7) and it is now imaging properly, meaning that the new kernel does indeed fix one usb-c adapter and breaks a different one. I’ll get the details on the microsoft ethernet adapter if you want them tomorrow.
-
@JJ-Fullmer Well what I can do is this. I can reset the FOS Linux kernel back to 4.19.65 base then only apply the usb-c changes to see if its the realtek driver or the usb-c changes causing the troubles. If you have the hardware to test on.
The other thing as like you said, we’ll need the nic vendor and hardware ID either from windows or via FOS Linux lspci or lsusb depending on how the nic is attached.
-
@george1421 Let the fun begin then, I have 4 of these that I need to setup today.
the hardware ID in windows is
USB\VID_045E&PID_0927&REV_3100
I’ll get the linux bit shortly -
@JJ-Fullmer Ah I see: https://forums.fogproject.org/topic/10943/surface-pro-4-registration-issues/25
045E:0927 == realtek r8152. There are new fingerprints all over that driver. Let me see
-
@george1421 I believe that is a different dongle, the one I have is model 1860, that post references 1821 and 1663, but it’s a fair guess that it’s the same or similar driver. I’m troubleshooting a different problem on one at the moment, but will have it boot into a debug fog session and run lsusb on it on my next reboot.
-
@JJ-Fullmer Ok well I added it because it wasn’t in the updated driver from realtek. As long as the hardware chip IDs are the same it should work no matter what model the dongle is.
https://drive.google.com/open?id=1RBLVzsFmXfTrn1sG0GE18usD-QOBs7Y6
File name is bzImageRT2
-
@george1421 I was able to boot into a debug session on the surface go with this new kernel.
I don’t have the lenovo l390 to test on at the moment but should be able to test it today. I’ll test it on my lenovo x390 too, but gotta make sure they all work.Here is the lsusb of the surface go usb-c ethernet adapter
lsusb Bus 002 Device 002: ID 045e:0955 Bus 001 Device 020: ID 045e:096f Bus 001 Device 001: ID 1d6b:0002 Bus 001 Device 003: ID 0cf3:e302 Bus 001 Device 002: ID 045e:0957 Bus 002 Device 003: ID 045e:0927 Bus 002 Device 001: ID 1d6b:0003
-
@george1421 I was able to nab an L390 I put into production before the user got here and do a quick test with the adapter on this new kernel. Great success it worked! So this kernel appears to be working on both the usb-c ethernet adapters I have that are manufacturer specific Microsoft and Lenovo.
Which thing did you change then?
-
@JJ-Fullmer I just added the microsoft hardware ID to the downloaded realtek driver per Sebastian’s request in the linked thread. No other changes were made.
-
@george1421 So this one is good to be tested as the default kernel now?
-
@JJ-Fullmer Yes until the next thing goes wrong.
That wasn’t meant to sound bad. Its all part of kernel development. As new hardware comes out the drivers need to be updated to accommodate the new hardware IDs, even if the new device is exactly the same as the old devices.
So just to roll things up what was done with this kernel.
- Activated the usb-c code in the kernel.
- Updated the realtek 8152 driver from version 1.9.9 to 2.12.0
- Added the microsoft 8152 compatible hardware code to the downloaded r8152.c file
- Recompiled the kernel using FOG configuration base file against the linux kernel 4.19.65.
-
@george1421 Any reason you didn’t want to try compiling kernel version 5.1.16 ? Noticed that there’s one of those in the kernel update screen of fog configuration.
-
@JJ-Fullmer said in issue with netcard of dock gen2 of lenovo l390:
Any reason you didn’t want to try compiling kernel version 5.1.16
Well there are a few reasons.
- The 5.1.16 kernel is radically different than 4.19.65 and it hasn’t been fully tested with fog and imaging. It was created to see if an updated kernel would address a slow nvme imaging issue that impacts a specific nvme drive. It didn’t resolve the issue by the way.
- FOG 1.5.7 (the latest GA release) ships with 4.19.64, I wanted to build one off kernels using the kernel version closest to 1.5.7 release so if we have a difference in operation we could tell if it was the one off kernel or something within FOG.
- The config file on the fogproject github site is configured for FOG 4.19.64 it would probably work on the 5.x.x series, but sometimes the linux folks restructure the kernel and retire some options and bring on new options requiring different parameters.
The intent of me building these one off kernels is to test new ideas and see if certain hardware need specific changes. Its possible based on testing these changes can be integrated into the FOG main line kernel. If I go off willy-nilly on my own using random bits it would be impossible for the developers to reintegrate these changes back into the main line kernel.
I know it was a long answer to a simple question, but the intent is with a specific purpose.