Page 1 of 1

Franklin U700

Posted: 13 Feb 2018, 16:35
by chrisms
I've been working on getting my Franklin U770 working with tomato see. http://linksysinfo.org/index.php?thread ... ost-294212

I'm very new to all of this so I'm not even sure I'm on the right track. However from what I can tell it looks like the modem may be doing some kind of usb mode switching. the vender/device id is 1fac:0232. I was not able to find a file for this in the usb-modeswitch-data-20170806.tar. I did find ones for other Franklin modems though.

Any help would be greatly appreciated thanks.

Re: Franklin U700

Posted: 13 Feb 2018, 23:56
by Josh
The modem is definitely in storage (driver install) mode.

With a bit of luck, you can just use the same procedure to mode-switch your device as the other Franklin devices.

Just copy one of the existing config files ("1fac:0130" or "1fac:0150") to a new one with the name "1fac:0232". (Don't use the other two that just set the configuration.)

Try this in /etc/usb_modeswitch.d and see what happens. You can edit the config file later when you know the correct target product ID your modem will get after the mode switch.

Re: Franklin U700

Posted: 14 Feb 2018, 05:26
by chrisms
@Josh

Thanks for the response, Since I am working in a tomato firmware image I'm not able to write anything to any partition other than jffs. So my question is if I copy say the 1fac:0150 file to /jffs as 1fac:0232 is there a way I can run the mode switch and point it to that file?

I think I figured it out but just an fyi on this page http://www.draisberghof.de/usb_modeswitch/
it has this:
Run "usb-modeswitch -h" to list the command line parameters. If any of them except -W, -D, -I and -q are used, a config file given with -c is ignored and all mandatory parameters have to be provided on the command line. See also the included man page.

I think it should be "usb_modeswitch -h" just wanted to point it out. maybe it's for a different version not sure

Re: Franklin U700

Posted: 14 Feb 2018, 06:08
by chrisms
ok so this is the command I'm using:

usb_modeswitch -c /jffs/1fac\:0232 -v 1fac -p 0232

cat /proc/bus/usb/devices
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 14 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1fac ProdID=0232 Rev= 2.28
S: Manufacturer=Franklin Wireless Corp.
S: Product=Franklin 700 USB Modem
S: SerialNumber=0123456789ABCDEF
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
A: FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=(none)
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=usbserial_generic
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

root@drouter:/tmp/etc# usb_modeswitch -c /jffs/1fac\:0232 -v 1fac -p 0232
Look for target devices ...
No devices in target mode or class found
Look for default devices ...
product ID matched
Found devices in default mode (1)
Access device 014 on bus 001
Get the current device configuration ...
Current configuration number is 1
Use interface number 0
with class 224
Error: can't use storage command in MessageContent with interface 0; interface class is 2, expected 8. Abort

Re: Franklin U700

Posted: 14 Feb 2018, 06:36
by chrisms
ok so I on this next attempt I tried disabling the option in tomato:
USB 3G Modem support Before disconnecting 3G Modem from USB port, remember to uncheck box. If modem used usbserial module, you have to reboot router before unplug modem.

Then I rebooted and ran cat /proc/bus/usb/devices
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 4 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1fac ProdID=0232 Rev= 2.28
S: Manufacturer=Franklin Wireless Corp.
S: Product=Franklin 700 USB Modem
S: SerialNumber=0123456789ABCDEF
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
A: FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=(none)
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

I noticed this time that on both I: it shows Driver=(none) last time I had the second I say this:
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=usbserial_generic

dmesg also now shows:
usb 2-2: new high speed USB device using ehci_hcd and address 3
usb 2-2: USB disconnect, address 3
usb 2-2: new high speed USB device using ehci_hcd and address 4

last time it had ttyUSB0

UPDATE after further review I think the fist attempt was not a good test, it looks like if I run switch3g this is what caused the serial driver to load.

Re: Franklin U700

Posted: 14 Feb 2018, 06:50
by chrisms
fyi I also tried coping the 1fac:0130 but got the same results. I guess I'm not to lucky.

Re: Franklin U700

Posted: 14 Feb 2018, 10:02
by LOM
1fac:0230 which you initially had (linksysinfo forum post) is the install id.
This modem probably switches by itself after a few seconds without the need for usb_modeswitch. The new id after switching will be 1fac:0232 where you will have a direct ethernet interface which should be driven by the rndis_host driver.

Do not force usbserial onto the interface, it is not of serial type!

Re: Franklin U700

Posted: 14 Feb 2018, 20:20
by chrisms
@LOM I see what your saying and I think you may be correct. If I don't do anything I see this in /var/log/messages:
Feb 8 22:12:38 drouter kern.info kernel: usb 2-2: new high speed USB device using ehci_hcd and address 111
Feb 8 22:12:39 drouter user.debug hotplug[9360]: Attached USB device 2-2:1.0 [INTERFACE=224/1/3 PRODUCT=1fac/232/228]
Feb 8 22:12:39 drouter user.debug hotplug[9361]: Attached USB device 2-2:1.1 [INTERFACE=10/0/0 PRODUCT=1fac/232/228]
Feb 8 22:12:43 drouter kern.info kernel: usb 2-2: USB disconnect, address 111
Feb 8 22:12:44 drouter kern.info kernel: usb 2-2: new high speed USB device using ehci_hcd and address 112
Feb 8 22:12:44 drouter user.debug hotplug[9384]: Attached USB device 2-2:1.0 [INTERFACE=224/1/3 PRODUCT=1fac/232/228]
Feb 8 22:12:44 drouter user.debug hotplug[9387]: Attached USB device 2-2:1.1 [INTERFACE=10/0/0 PRODUCT=1fac/232/228]
Feb 8 22:12:54 drouter kern.info kernel: usb 2-2: USB disconnect, address 112
Feb 8 22:12:55 drouter kern.info kernel: usb 2-2: new high speed USB device using ehci_hcd and address 113
Feb 8 22:12:55 drouter user.debug hotplug[9409]: Attached USB device 2-2:1.0 [INTERFACE=224/1/3 PRODUCT=1fac/232/228]
Feb 8 22:12:55 drouter user.debug hotplug[9410]: Attached USB device 2-2:1.1 [INTERFACE=10/0/0 PRODUCT=1fac/232/228]

so I think it is switching on it's own.

I know this is now outside the scope of modeswitch but just in case you happen to know the menswear.

I have loaded the following modules:
mii.ko
usbnet.ko
cdc_ether.ko
rndis_host.ko

I would expect for the rndis driver to get loaded but it's not. Is there somewhere I could look to make sure the driver is correctly associated with the device?

I'll also post this back on the linksysinfo site as I said it's now outside of the realm of this forum.

Re: Franklin U700

Posted: 15 Feb 2018, 07:46
by LOM
chrisms wrote:
I have loaded the following modules:
mii.ko
usbnet.ko
cdc_ether.ko
rndis_host.ko
Does lsmod show these as loaded (=present in RAM)?

chrisms wrote: I would expect for the rndis driver to get loaded but it's not. Is there somewhere I could look to make sure the driver is correctly associated with the device?
If the rndis driver gets loaded (shows up in lsmod) then it should also attach to a USB device interface with the class/subclass/protocol attributes of e0/01/03 (see your cat of usb device 0fac:0232) which equals 224/01/03 in decimal notation (see your system log).

The rndis_host.c source file has a section saying what that driver should bind to and there is:

}, {
/* RNDIS for tethering */
USB_INTERFACE_INFO(USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
.driver_info = (unsigned long) &rndis_info,
},

(USB_CLASS_WIRELESS_CONTROLLER is defined as 0xe0)


What kernel version are you at?
Something very old Tomato where the above entry may be missing in rndis_host?

Re: Franklin U700

Posted: 16 Feb 2018, 05:17
by chrisms
@LOM yes it is loaded lsmod shows:
root@drouter:/tmp/home/root# lsmod
Module Size Used by Tainted: P
rndis_host 5041 0
cdc_ether 3949 1 rndis_host
usbnet 15604 2 rndis_host,cdc_ether
mii 3436 1 usbnet

uname -r returns:
2.6.36.4brcmarm

I guess I should look into learning how to compile my own tomato firmware from source. Or at least maybe compile an updated version of rndis_host.

Re: Franklin U700

Posted: 16 Feb 2018, 05:50
by chrisms
Ok I think I found the source where shibby compiles his arm-extras.

https://bitbucket.org/pl_shibby/tomato- ... ew-default

looks like at lines 627 - 629 is the section you quoted for the driver bind.

So still not sure why this isn't even attempting to bind to my device?

Re: Franklin U700

Posted: 26 Feb 2018, 17:14
by chrisms
So I made some headway and confirmed that the Franklin U770 device does infact switch modes on it's own. I installed OpenWRT which uses kernel version 3 instead of 2.6 and I installed the RNDIS package and was able to get a USB0 interface. It looks like it may be a problem with the older kernel and the rndis_host module. but defiantly not something with mode switching.

Re: Franklin U700

Posted: 27 Feb 2018, 04:20
by LOM
chrisms wrote: I installed OpenWRT which uses kernel version 3 instead of 2.6 and I installed the RNDIS package and was able to get a USB0 interface. It looks like it may be a problem with the older kernel and the rndis_host module.
I suspected something like that but coldn't remember if there was a problem with rndis_host in kernel 2.6. (and I was too lazy to spend time finding out)
Tomato's problem is that they don't have access to mfgrs closed source drivers, wifi drivers in particular, so they have to stick to the mfgrs GPL source code where they use the linux kernel but strip off mfgrs web gui code and other things. Then they add the Tomato gui and utilities on that.
Since router mfgrs tend to use old and lean linux version then Tomato will also be stuck there.

Re: Franklin U700

Posted: 27 Feb 2018, 17:07
by chrisms
@LOM

you are correct and the funny thing is the router I decided to try the openWRT on that I got it working with is a Netgear WNDR4000 which uses the Broadcom wifi chip bcm4331 which uses closed source drivers for the 5Ghz radio. So now I'm stuck on that part, lol always fun. I did read that people have been successful in extracting the proprietary drivers from dd-wrt. I guess dd-wrt has some kind of agreement with broadcom to get drivers? idk.

I'm not sure what you are trying to say here.

"Tomato's problem is that they don't have access to mfgrs closed source drivers, wifi drivers in particular, so they have to stick to the mfgrs GPL source code where they use the linux kernel but strip off mfgrs web gui code and other things. Then they add the Tomato gui and utilities on that.
Since router mfgrs tend to use old and lean linux version then Tomato will also be stuck there."

I don't believe the rndis_host driver is proprietary. Also I'm almost certain that the openWRT rndis_host file doesn't have any proprietary code in it because I know they are very strict on being 100% open source. So I guess what I'm saying is that openWRT also doesn't have access to closed source drivers but the rndis_host dirver works just fine on that.