On Wed, Aug 9, 2017 at 9:25 AM, Bjørn Mork <bjorn@mork.no> wrote:
loïc tourlonias <loic.tourlonias@gmail.com> writes:
Thank's for the quick response
Hi everybody,
In my project I have an USB composite device (a LTE modem) which use USB to communicate with the processor. This device has several interface to communicate but I do not use all of them. In particular, it loads cdc_ether device which I don't use and I have an undesired ethXX which interferes with a service in my system.
Sounds like your system has other issues, but whatever...
I may not have been clear in my explanation. What seems wrong with my system?
To schematize, let's say my device is loaded on port 2 of usb1, I have the following USB topology: - 1-2:1.0: tty - 1-2:1.1: tty - 1-2:1.2: tty - 1-2:1.3: tty - 1-2:1.4: tty - 1-2:1.5: eth (not desired)
Is there a way to prevent this specific ethXX to mount?
I've already tried to create a udev rules, but I don't manage to stop the loading process. Here is a summary of my tries: 1/ I couldn't use the /sys/bus/usb1/.../1-2/activated file in my udev rule because it's an USB composite device and I want to use the tty interfaces but not the eth interface
2/ I have tried to stop the udev loading process, but setting MODALIAS environment variable to a NULL-string doesn(t do the trick and last-rule udev option has been removed in my udev version (1.8.2).
3/ I have tried to create a custom environment variable IGNORE_ETH and modify my last rule which run modprobe with the modalias variable. In the logs I see that modprobe isn't called by udev rules, but the cdc_ether device is loaded all the same.
4/ I have think of creating a stub cdc_ether driver and use the /etc/modprobe.d/my_file.conf to preempt the loading for my specific usb composite device but this solution is ugly and I'm not sure it will work.
The cdc_ether driver treats any ID entry with .driver_info = 0 as a blacklist entry. So you can dynamically blacklist devices by writing the "VID PID" to /sys/bus/usb/drivers/cdc_ether/new_id before the device is probed.
I have tried this and look at the source code of driver/usb/core/driver.c. But I think this is not what I required. What I understand is that the new_id file is used to dynamically add new USB id to the cdc_ether driver. What I want is the opposite, currently my device is loaded with cdc_ether.ko and I want this device to remain unloaded. Furthermore, after sending this email I have thought of renaming my device in an udev rule. But unfortunately, it passed by an eth0 state which I want to get rid of.
Bjørn