D-Link DWM-157 USB Stock not recognized
-
I cannot post the logs, I am getting SPAM message
"Post content was flagged as spam by Akismet.com"
-
so these are the interfaces after the camcontrol eject cd0 command.
MI_00 D-Link Mobile Broadband Device (Network Adapter) (cdc_mbim)
MI_02 D-Link HSPA+DataCard Diagnostics Interface (also ppp dialup modem)
MI_03 D-Link HSPA+DataCard NMEA Device
MI_04 D-Link HSPA+DataCard Speech Port
MI_05 D-Link HSPA+DataCard Debug Port
MI_06 USB Mass Storage DeviceSo I understand as follows,
Since the drivers are not available in pfSense/BSD for the interfaces from 0 to 5, when I do camcontrol eject cd0, it uses the 6th interface (USB Mass Storage Device)
Thoughts?
Best,
Savas
-
Yes, only interfaces 2 and 3 would otherwise be available if u3g attached to them.
The usbconfig output should show those interfaces though even if no driver does attach.
I have upvoted some of your posts which should stop akismet triggering but it does seem have a mind of it's own. We have almost no control over it.
Steve
-
ugen4.2: <D-Link,Inc D-Link DWM-157> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x00ef <Miscellaneous device> bDeviceSubClass = 0x0002 bDeviceProtocol = 0x0001 bMaxPacketSize0 = 0x0040 idVendor = 0x2001 idProduct = 0x7d0e bcdDevice = 0x0300 iManufacturer = 0x0009 <D-Link,Inc > iProduct = 0x000a <D-Link DWM-157> iSerialNumber = 0x0000 <no string> bNumConfigurations = 0x0001 Configuration index 0 bLength = 0x0009 bDescriptorType = 0x0002 wTotalLength = 0x00e4 bNumInterfaces = 0x0007 bConfigurationValue = 0x0001 iConfiguration = 0x0000 <no string> bmAttributes = 0x00a0 bMaxPower = 0x00fa Additional Descriptor bLength = 0x08 bDescriptorType = 0x0b bDescriptorSubType = 0x00 RAW dump: 0x00 | 0x08, 0x0b, 0x00, 0x02, 0x02, 0x0e, 0x00, 0x01 Interface 0 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0000 bAlternateSetting = 0x0000 bNumEndpoints = 0x0001 bInterfaceClass = 0x0002 <Communication device> bInterfaceSubClass = 0x000e bInterfaceProtocol = 0x0000 iInterface = 0x0001 <COM(comm_if)> Additional Descriptor bLength = 0x05 bDescriptorType = 0x24 bDescriptorSubType = 0x00 RAW dump: 0x00 | 0x05, 0x24, 0x00, 0x10, 0x01 Additional Descriptor bLength = 0x05 bDescriptorType = 0x24 bDescriptorSubType = 0x06 RAW dump: 0x00 | 0x05, 0x24, 0x06, 0x00, 0x01 Additional Descriptor bLength = 0x0c bDescriptorType = 0x24 bDescriptorSubType = 0x1b RAW dump: 0x00 | 0x0c, 0x24, 0x1b, 0x00, 0x01, 0x00, 0x02, 0x10, 0x08 | 0x40, 0xdc, 0x05, 0x20 Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0088 <IN> bmAttributes = 0x0003 <INTERRUPT> wMaxPacketSize = 0x0040 bInterval = 0x0001 bRefresh = 0x0000 bSynchAddress = 0x0000 Interface 1 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0001 bAlternateSetting = 0x0000 bNumEndpoints = 0x0000 bInterfaceClass = 0x000a <CDC-data> bInterfaceSubClass = 0x0000 bInterfaceProtocol = 0x0002 iInterface = 0x0002 <COM(data_if)> Interface 1 Alt 1 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0001 bAlternateSetting = 0x0001 bNumEndpoints = 0x0002 bInterfaceClass = 0x000a <CDC-data> bInterfaceSubClass = 0x0000 bInterfaceProtocol = 0x0002 iInterface = 0x0000 <no string> Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0081 <IN> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0001 <OUT> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Interface 2 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0002 bAlternateSetting = 0x0000 bNumEndpoints = 0x0003 bInterfaceClass = 0x00ff <Vendor specific> bInterfaceSubClass = 0x0002 bInterfaceProtocol = 0x0001 iInterface = 0x0003 <COM(comm_if)> Additional Descriptor bLength = 0x05 bDescriptorType = 0x24 bDescriptorSubType = 0x00 RAW dump: 0x00 | 0x05, 0x24, 0x00, 0x10, 0x01 Additional Descriptor bLength = 0x04 bDescriptorType = 0x24 bDescriptorSubType = 0x02 RAW dump: 0x00 | 0x04, 0x24, 0x02, 0x0f Additional Descriptor bLength = 0x05 bDescriptorType = 0x24 bDescriptorSubType = 0x06 RAW dump: 0x00 | 0x05, 0x24, 0x06, 0x02, 0x03 Additional Descriptor bLength = 0x05 bDescriptorType = 0x24 bDescriptorSubType = 0x01 RAW dump: 0x00 | 0x05, 0x24, 0x01, 0x03, 0x03 Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0087 <IN> bmAttributes = 0x0003 <INTERRUPT> wMaxPacketSize = 0x0040 bInterval = 0x0003 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0082 <IN> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 2 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0002 <OUT> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Interface 3 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0003 bAlternateSetting = 0x0000 bNumEndpoints = 0x0002 bInterfaceClass = 0x00ff <Vendor specific> bInterfaceSubClass = 0x0000 bInterfaceProtocol = 0x0000 iInterface = 0x0005 <COM(data_if)> Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0083 <IN> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0003 <OUT> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Interface 4 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0004 bAlternateSetting = 0x0000 bNumEndpoints = 0x0002 bInterfaceClass = 0x00ff <Vendor specific> bInterfaceSubClass = 0x0000 bInterfaceProtocol = 0x0000 iInterface = 0x0006 <COM(data_if)> Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0084 <IN> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0004 <OUT> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Interface 5 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0005 bAlternateSetting = 0x0000 bNumEndpoints = 0x0002 bInterfaceClass = 0x00ff <Vendor specific> bInterfaceSubClass = 0x0000 bInterfaceProtocol = 0x0000 iInterface = 0x0007 <COM(data_if)> Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0085 <IN> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0005 <OUT> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Interface 6 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0006 bAlternateSetting = 0x0000 bNumEndpoints = 0x0002 bInterfaceClass = 0x0008 <Mass storage> bInterfaceSubClass = 0x0006 bInterfaceProtocol = 0x0050 iInterface = 0x0008 <Mass Storage > Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0086 <IN> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0006 <OUT> bmAttributes = 0x0002 <BULK> wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000
-
@stephenw10 said in D-Link DWM-157 USB Stock not recognized:
Yes, only interfaces 2 and 3 would otherwise be available if u3g attached to them.
The usbconfig output should show those interfaces though even if no driver does attach.
I have upvoted some of your posts which should stop akismet triggering but it does seem have a mind of it's own. We have almost no control over it.
Steve
it worked now, I just posted the log
-
Yep, it really looks like that is a C1 device mislabelled. But that is still not recognised by u3g even is the most recent FreeBSD. https://github.com/freebsd/freebsd/blob/master/sys/dev/usb/usbdevs
It's probably relatively easy to add it. The serial interfaces are there they just need to be attached but that's not something I can do. To add new devices requires rebuilding the kernel and hence it's only really practical to do in FreeBSD rather then in pfSense. Those changes usually happen there first and are brought into pfSense though it does happen the other way on occasion.
It's still easier to use a different modem.
Steve
-
Thanks Steve, how can I ask FreeBSD community to add this device? For some reason, this is/used to be a popular device in the region I live (middle east) and it would be nice to add it for the future users. Meanwhile I will try with a Huawei E173.
-
There are examples of people having done it for other devices. I would start by looking on the FreeBSD forums for other threads. And then opening your own thread if it's not obvious.
Ultimately you would be looking to make a patch against udbdevs and u3g and then issue a pull request for it.It would be much easier to test if u3g was a loadable kernel module but I don't think that s possible.
Steve
-
I found this, https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=196362
I will post shortly with the experience we had here.
-
@chedxb said in D-Link DWM-157 USB Stock not recognized:
I found this, https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=196362
I will post shortly with the experience we had here.
As explained here, I tried
usb_modeswitch -v 2001 -p a407 -m 1 -M 555342431234567800000000000003f0010300000000000000000000000000 -R 1and I got this,
Apr 16 16:51:21 kernel da0: quirks=0x2<NO_6_BYTE>
Apr 16 16:51:21 kernel da0: Attempt to query device size failed: ILLEGAL REQUEST, Invalid field in CDB
Apr 16 16:51:21 kernel da0: 40.000MB/s transfers
Apr 16 16:51:21 kernel da0: <HSPA USB SCSI CD-ROM 6225> Removable Direct Access SCSI device
Apr 16 16:51:21 kernel da0 at umass-sim0 bus 0 scbus2 target 0 lun 0
Apr 16 16:51:21 kernel umass0: <Mass Storage > on usbus4
Apr 16 16:51:21 kernel umass0 on uhub1
Apr 16 16:51:21 kernel ue0: Ethernet address: 02:00:ff:aa:aa:aa
Apr 16 16:51:21 kernel ue0: <USB Ethernet> on cdce0
Apr 16 16:51:21 kernel cdce0: <COMcommif> on usbus4
Apr 16 16:51:21 kernel cdce0 on uhub1
Apr 16 16:51:21 kernel ugen4.2: <D-Link,Inc D-Link DWM-157> at usbus4
Apr 16 16:51:19 kernel ugen4.2: <D-Link,Inc D-Link DWM-157> at usbus4 (disconnected)
Apr 16 16:51:19 kernel umass0: detached
Apr 16 16:51:19 kernel (cd0:umass-sim0:0:0:0): Periph destroyed
Apr 16 16:51:19 kernel cd0: <HSPA USB SCSI CD-ROM 6225> s/n 531399703502680 detached
Apr 16 16:51:19 kernel cd0 at umass-sim0 bus 0 scbus2 target 0 lun 0
Apr 16 16:51:19 kernel umass0: at uhub1, port 1, addr 2 (disconnected)I see it under Available network ports: as well. I will test in the evening if it works or not.
-
Ah, OK that's mostly all done then. Nice!
So yeah you can see that's a two line change to two files. Should be easy enough to replicate for the new ID.
Can you try this against your modem?
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=196362#c9Does it then show up as ue0 as shown there?
Steve
-
Ah cross posted I see you did! Yeah see what happens when you assign it.
FreeBSD/pfSense handles serial port modems much better but the speed is limited there.
It would be interesting to see hoe usbconfig sees the modem when it's in Ethernet mode like that.
Steve
-
I assigned as a new interface and then added usb_modeswitch -v 2001 -p a407 -m 1 -M 555342431234567800000000000003f0010300000000000000000000000000 -R 1 on
Shellcmd Configuration as earlyshellcmd and rebooted. So far so good :) I just need a SIM card to test the data connection. -
The big problem with USB Ethernet type devices is that pfSense does not have any way to handle them disconnecting. If you reboot and unplug the modem pfSense will stop booting at the interfaces assign screen at the console because ue0 is no9 longer present on the system but is assigned in the config. There are workarounds but they are all hacky....
What speeds do you expect to get from that device?
Steve
-
I am planning to use it as a backup connection. I will cap download 5Mbps and upload 1Mbps with Traffic Shaper.
Is it possible to put a timer for the interfaces? Say, if ue0 is not present for 10s, then continue booting without it.
-
Well you can script whatever you want but the further you move away from the default install the harder things will be or you at upgrade for example.
You can easily get those speeds over a serial interface though so I would still with that if you can.
Steve
-
Thanks Steve, do you recommend any particular serial interface modem?
-
I personally have a Sierra em7305. It's an internal m.2 card but usb connected. That provides serial ports. I get 20-30Mbps over it. The newer em7455 also works fine.
Hard to recommend anything I don't actually use myself.
Other than that external Ethernet connected modems are generally much easier to deal with like the Netgear lb1120.
Steve
-
-