Useful 3G modem 'mode switching' script
-
Ah, looks promising. :)
You can try talking to the modem with cu or tip like I did. If it responds to AT commands I would expect it to work.Steve
-
The next thing to try is adding the below line to the firewall config to test whether pfSense will switch the modem before it does the PPP dial:
<shellcmd>usb_modeswitch -c /usr/local/etc/modem.txt</shellcmd>
-
If not then try <earlyshellcmd>instead.
Steve</earlyshellcmd>
-
It does respond to AT commands on cuaU0.2 :)
My question is, what is cuaU0.1 which is also available to assign under PPP
Also, when I assign the PPP to an interface, I also see cuaU0.0 and cuau0 in the 'Modem Port' dropdown list so i'm a little confused ???
-
Probably due to the way pfSense finds the serial ports to display:
$serialports = pfSense_get_modem_devices();
I can't find that function but if it relies on, for example, sysctl dev.u3g then they won't appear there.
The reason that the modem provides several serial ports is not obvious to me but it seems it's possible to get stats from the modem on one interface whilst connected via another, signal strength, baud rate etc.
Steve
-
Thanks Steve.
I found a simcard, there's no credit on it but it still connects and gets an IP address.
I've tried both the shellcmd and earlyshellcmd options but sometimes there is a delay until the actual switch occurs. The boot sequence continues regardless, the PPP interface is brought up but the modem is not yet ready so a WAN connection isn't established. If I go into the GUI and manually hit connect, PPP is dialled and the WAN comes online.
Any idea of how we can delay bringing up PPP until we know the modem has successfully switched?
-
What happens when it tries to dial out before the interface is switched?
I'm surprised that it doesn't just keep trying.
Maybe using dial-on demand or idle time out.You could write a script that ran usb_modeswitch, waited and then called the appropriate interface connect function.
Steve
-
It doesnt do anything, the box continues its boot process as if no modem was plugged in. I see the modem details flash up on the console towards the end of the boot process but PPP has already initialised at this point (without seeing the modem) so i suspect it wont keep on attempting a dial out because as far it's concerned, no modem was detected at the time of initialisation, I hope that makes sense!
-
Yes I see exactly what you mean.
Would probably be best to use an rc script then.
This is just a guess but perhaps:#!/bin/sh /usr/local/sbin/usb_modeswitch -c yourmodem.txt sleep 5 /etc/rc.reload_interfaces
Try issuing a /etc/rc.reload_interfaces and see if it finds the modem and connects.
Steve
-
I had just finished creating a similar script and was looking for a command that would restart PPP, the reload_interfaces seems to do the trick nicely, thank you.
-
how can i put my usbmode_switch script in startup??i have bandluxe 21 mbps 3g modem and successfully flip it to modem mode using usb_modeswitch..I want to connect my modem's ppp in start up..thanks
-
If it's an RC script, as I detailed above, put it in /usr/local/etc/rc.d and it will run at boot.
Steve
-
i already put my script in /usr/local/etc/rc.d/ but when i reboot pfsense,,ppp dials in fiirst before flipping my usb modem,thus i need to dial my ppp manually..i want to flip my modem first then ppp dials in..TIA
-
Yes Jamesc experienced that problem above.
Doesn't it redial when you reload the interfaces in the script?Steve
-
thanks..reload interfaces did the trick..now i will add 1 more different usb modem.. :)
-
problem occurs: persistent disconnections..i cant make my modem to hold for an hour or so..my ppp connection disconnects every 10 seconds..i try to use my 3g modem directly with my laptop but never had a connection hangup..
-
Is it exactly 10 seconds every time? This might indicate some sort of ppp error. Or more random?
What do you see in the logs? Does it do this if you setup the connection manually instead of using the script?
Have you set the PPP session to be 'always on' (idle timeout = 0, which is the default setting)using rc.reload_interfaces seemed a bit crude when I suggested it earlier and it still does. It maybe that it is causing some other undesired consequence. It would be much better to simply reload WAN or indeed just have it redial. Sadly I'm not sufficiently familiar with the code to suggest anything better. :(
Steve
Edit: rc.linkup WAN up (or should that be 'up WAN') perhaps? :-\ Complete guesswork!
-
i think ppp error side?
Mar 5 23:07:52 ppp: [opt2] IPCP: SendConfigReq #3 Mar 5 23:07:52 ppp: [opt2] IPADDR 176.225.134.77 Mar 5 23:07:52 ppp: [opt2] IPCP: rec'd Configure Ack #3 (Ack-Sent) Mar 5 23:07:52 ppp: [opt2] IPADDR 176.225.134.77 Mar 5 23:07:52 ppp: [opt2] IPCP: state change Ack-Sent --> Opened Mar 5 23:07:52 ppp: [opt2] IPCP: LayerUp Mar 5 23:07:52 ppp: [opt2] 176.225.134.77 -> 10.0.0.1 Mar 5 23:07:52 ppp: [opt2] IFACE: Up event Mar 5 23:08:36 ppp: Multi-link PPP daemon for FreeBSD Mar 5 23:08:36 ppp: Mar 5 23:08:36 ppp: process 28199 started, version 5.5 (root@FreeBSD_8.0_pfSense_2.0-snaps.pfsense.org 10:25 12-Oct-2011) Mar 5 23:08:36 ppp: caught fatal signal term Mar 5 23:08:36 ppp: [opt2] IFACE: Close event Mar 5 23:08:36 ppp: [opt2] IPCP: Close event Mar 5 23:08:36 ppp: [opt2] IPCP: state change Opened --> Closing Mar 5 23:08:36 ppp: [opt2] IPCP: SendTerminateReq #4 Mar 5 23:08:36 ppp: [opt2] IPCP: LayerDown Mar 5 23:08:36 ppp: waiting for process 16679 to die... Mar 5 23:08:36 ppp: [opt2] IFACE: Down event Mar 5 23:08:36 ppp: [opt2] IPCP: rec'd Terminate Ack #4 (Closing) Mar 5 23:08:36 ppp: [opt2] IPCP: state change Closing --> Closed Mar 5 23:08:36 ppp: [opt2] IPCP: LayerFinish Mar 5 23:08:36 ppp: [opt2] Bundle: No NCPs left. Closing links... Mar 5 23:08:36 ppp: [opt2] Bundle: closing link "opt2_link0"... Mar 5 23:08:36 ppp: [opt2_link0] Link: CLOSE event Mar 5 23:08:36 ppp: [opt2_link0] LCP: Close event Mar 5 23:08:36 ppp: [opt2_link0] LCP: state change Opened --> Closing Mar 5 23:08:36 ppp: [opt2_link0] Link: Leave bundle "opt2" Mar 5 23:08:36 ppp: [opt2] Bundle: Status update: up 0 links, total bandwidth 9600 bps Mar 5 23:08:36 ppp: [opt2] IPCP: Close event Mar 5 23:08:36 ppp: [opt2] IPCP: Down event Mar 5 23:08:36 ppp: [opt2] IPCP: state change Closed --> Initial Mar 5 23:08:36 ppp: [opt2_link0] LCP: SendTerminateReq #3 Mar 5 23:08:36 ppp: [opt2_link0] LCP: LayerDown Mar 5 23:08:36 ppp: [opt2_link0] LCP: rec'd Terminate Ack #3 (Closing) Mar 5 23:08:36 ppp: [opt2_link0] LCP: state change Closing --> Closed Mar 5 23:08:36 ppp: [opt2_link0] LCP: LayerFinish Mar 5 23:08:36 ppp: [opt2_link0] Link: DOWN event Mar 5 23:08:36 ppp: [opt2_link0] LCP: Down event Mar 5 23:08:36 ppp: [opt2_link0] LCP: state change Closed --> Initial
-
/etc/rc.reload_interfaces in my script causes my 3g ppp connection to restart every 10-20 secs..
-
Can you show us your script?
It should only be run once at boot, I can't see how it could possibly effect the ppp cycling time. :-\Steve