• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login
Netgate Discussion Forum
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login

Useful 3G modem 'mode switching' script

Scheduled Pinned Locked Moved General pfSense Questions
52 Posts 4 Posters 38.4k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J
    jly2680
    last edited by Mar 5, 2012, 8:07 PM

    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
    
    1 Reply Last reply Reply Quote 0
    • J
      jly2680
      last edited by Mar 6, 2012, 8:47 AM

      /etc/rc.reload_interfaces in my script causes my 3g ppp connection to restart every 10-20 secs..

      1 Reply Last reply Reply Quote 0
      • S
        stephenw10 Netgate Administrator
        last edited by Mar 6, 2012, 10:03 AM

        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

        1 Reply Last reply Reply Quote 0
        • J
          jly2680
          last edited by Mar 6, 2012, 1:36 PM Mar 6, 2012, 1:31 PM

          #!/bin/sh
          /usr/local/sbin/usb_modeswitch usb_modeswitch -v 1a8d -p 2000 -M "5553424312345678000000000000061e000000000000000000000000000000" -2 "5553424312345679000000000000061b000000020000000000000000000000" -n 1 -W
          sleep 5
          /etc/rc.reload_interfaces
          

          removing reload interfaces makes my 3g ppp connection stable..is there a place where my script will run first then ppp dials in?or to restart ppp connection after my script run?
          i can easily do this with openwrt/ddwrt but i want to try pfsense..

          1 Reply Last reply Reply Quote 0
          • S
            stephenw10 Netgate Administrator
            last edited by Mar 6, 2012, 8:44 PM

            The code in /usr/local/etc.rc.d should only be run once as far as I know.
            You could try calling the script using shellcmd or earlyshellcmd instead:
            http://doc.pfsense.org/index.php/Executing_commands_at_boot_time

            Steve

            1 Reply Last reply Reply Quote 0
            • J
              jly2680
              last edited by Mar 6, 2012, 10:40 PM

              thanks,,same thing it doesnt auto connect on boot even if i edit my xml with earlyshellcmd or shellcmd..
              on openwrt,,i usually put my script in /etc/rc.local and run a cron job with a watchdog scripts,,it automatically restart my 3g interface when ppp hangs up.hope i can do same thing on pfsense.am total noob with pfsense thats why im still catching up with it..

              1 Reply Last reply Reply Quote 0
              • T
                th3r3isnospoon
                last edited by Mar 13, 2012, 2:47 AM

                Hello,

                I'd really like to get this feature working on my pfSense box.

                I read through this thread 3 times but, I don't see how to go about actually installing the port or using one of your scripts.

                If you have a minute or two, can you just throw together a how-to so I can take the necessary steps to get this to work?  I'd really appreciate it!

                Thank you!

                -th3r3isnospoon

                1 Reply Last reply Reply Quote 0
                • S
                  stephenw10 Netgate Administrator
                  last edited by Mar 13, 2012, 2:35 PM Mar 13, 2012, 2:32 PM

                  Ok, this may have to be multipart as I'm pushed for time!  ::)

                  First check the usb-modeswitch forum/website to see if your modem is supported at all:
                  http://www.draisberghof.de/usb_modeswitch/
                  Note down any relevant switching code that other users may have posted if it's not included as standard in device_reference.txt:
                  http://www.draisberghof.de/usb_modeswitch/device_reference.txt

                  Install the FreeBSD package in pfSense. This will vary depending on your pfSense version.
                  For 2.0.X NanoBSD:

                  
                  /etc/rc.conf_mount_rw
                  pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/usb_modeswitch.tbz
                  /etc/rc.conf_mount_ro
                  
                  

                  For 2.0.X full install:

                  
                  pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/usb_modeswitch.tbz
                  
                  

                  Now depending on what the required code for your modem is you can either just enter it at the command line directly, e.g.:

                  
                  /usr/local/sbin/usb_modeswitch usb_modeswitch -v 1a8d -p 2000 -M "5553424312345678000000000000061e000000000000000000000000000000" -2 "5553424312345679000000000000061b000000020000000000000000000000" -n 1 -W
                  
                  

                  or call a file containing the appropriate section from device_reference.txt (or some custom code), e.g.:

                  /usr/local/sbin/usb_modeswitch -c yourmodem.txt
                  

                  You can run it with -h to list the command line options:

                  /usr/local/sbin/usb_modeswitch -h
                  

                  If you get it right usb_modeswitch will report success and you will see some lines in the pfSense log showing devices removed and attached.

                  If you have found the code to correctly switch your modem you can put a script file in /usr/local/etc/rc.d.
                  Call it whateveryouwant.sh:

                  
                  #!/bin/sh
                  /usr/local/sbin/usb_modeswitch -c yourmodem.txt
                  sleep 5
                  /etc/rc.reload_interfaces
                  
                  

                  I am still of the opinion that /etc/rc.reload_interfaces is probably not the correct way to get the modem running, it seems too crude, but it worked for jamesc.

                  Steve

                  1 Reply Last reply Reply Quote 0
                  • T
                    th3r3isnospoon
                    last edited by Mar 13, 2012, 2:42 PM

                    You sir are a gentleman and scholar.  I really appreciate this.

                    I will try this out, this evening and report back.

                    THANK YOU!

                    -th3r3isnospoon.

                    1 Reply Last reply Reply Quote 0
                    • T
                      th3r3isnospoon
                      last edited by Mar 13, 2012, 11:02 PM

                      Hey,

                      Here is what I have so far:

                      My modem settings (att G10461) :
                      ########################################################

                      Option iCon 461

                      Contributor: Samit Basu

                      DefaultVendor=  0x0af0
                      DefaultProduct= 0x7a05

                      TargetClass=    0xff

                      MessageContent="55534243123456780000000000000601000000000000000000000000000000"

                      My specific command I ran:

                      /usr/local/sbin/usb_modeswitch usb_modeswitch -v 0af0 -p 7a05 -C 0xff -M "55534243123456780000000000000601000000000000000000000000000000" -n 1 -W
                      

                      My Results:
                      [2.0.1-RELEASE][admin@local.loc]/root(1): /usr/local/sbin/usb_modeswitch usb_modeswitch -v 0af0 -p 7a05 -C 0xff -M "55534243123456780000000000000601000000000000000000000000000000" -n 1 -W
                      Taking all parameters from the command line

                      • usb_modeswitch: handle USB devices with multiple modes
                      • Version 1.2.1 (C) Josua Dietze 2011
                      • Based on libusb0 (0.1.12 and above)

                      ! PLEASE REPORT NEW CONFIGURATIONS !

                      DefaultVendor=  0x0af0
                      DefaultProduct= 0x7a05
                      TargetVendor=  not set
                      TargetProduct=  not set
                      TargetClass=    0xff
                      TargetProductList=""

                      DetachStorageOnly=0
                      HuaweiMode=0
                      SierraMode=0
                      SonyMode=0
                      QisdaMode=0
                      GCTMode=0
                      KobilMode=0
                      SequansMode=0
                      MobileActionMode=0
                      CiscoMode=0
                      MessageEndpoint=  not set
                      MessageContent="55534243123456780000000000000601000000000000000000000000000000"
                      NeedResponse=1
                      ResponseEndpoint= not set

                      InquireDevice enabled (default)
                      Success check disabled
                      System integration mode disabled

                      Looking for target devices …
                      No devices in target mode or class found
                      Looking for default devices ...
                        searching devices, found USB ID 0af0:7a05
                        found matching vendor ID
                        found matching product ID
                        target class ff not matching
                        adding device
                        searching devices, found USB ID 0000:0000
                        searching devices, found USB ID 0000:0000
                        searching devices, found USB ID 0000:0000
                        searching devices, found USB ID 0000:0000
                        searching devices, found USB ID 0000:0000
                      Found device in default mode, class or configuration (1)
                      Accessing device 006 on bus 000 ...
                      Getting the current device configuration ...
                      OK, got current device configuration (1)
                      Using first interface: 0x00
                      Using endpoints 0x01 (out) and 0x81 (in)
                      Inquiring device details; driver will be detached ...
                      Cant't do driver detection and detaching on this platform.

                      SCSI inquiry data (for identification)

                      Vendor String: ZCOption
                        Model String: HSUPA Modem
                      Revision String:

                      USB description data (for identification)

                      Manufacturer: Option N.V.
                          Product: Globetrotter HSUPA Modem
                        Serial No.: Serial Number

                      Setting up ugen4.2: <option n.v.="">at usbus4 (disconnected)
                      umass0: at uhub4, port 2, addr 2 (disconnected)
                      communication wi(cd0:umass-sim0:0:0:0): lost device
                      (cd0:umass-sim0:0:0:0): removing device entry
                      th interface 0
                      Using endpoint 0x01 for message sending ...
                      Trying to send message 1 to endpoint 0x01 ...
                      OK, message successfully sent
                      Reading the response to message 1 (CSW) ...
                      OK, response successfully read (13 bytes).
                      Resetting response endpoint 0x81
                      Resetting message endpoint 0x01
                      -> Run lsusb to note any changes. Bye.

                      [2.0.1-RELEASE][admin@local.loc]/root(2): ugen4.2:</option> <option n.v.="">at usbus4
                      umass0:</option> <option 2="" n.v.="" globetrotter="" hsupa="" modem,="" rev="" 2.00="" 0.00,="" addr="">on usbus4
                      (probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0
                      (probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
                      (probe0:umass-sim0:0:0:0): SCSI status: Check Condition
                      (probe0:umass-sim0:0:0:0): SCSI sense: NOT READY asc:3a,0 (Medium not present)
                      da0 at umass-sim0 bus 0 scbus0 target 0 lun 0
                      da0: <sd hsupa="" modem="">Removable Direct Access SCSI-2 device
                      da0: 40.000MB/s transfers
                      da0: Attempt to query device size failed: NOT READY, Medium not present

                      When I go to see if I can add a PPP interface, still none are listed.  What should I change in order to make it work?
                      I'm so close, I can feel it!!

                      Thank you!

                      -th3r3isnospoon</sd></option>

                      1 Reply Last reply Reply Quote 0
                      • S
                        stephenw10 Netgate Administrator
                        last edited by Mar 14, 2012, 12:28 PM

                        Hmm, yes you are close. I have to say that I have only played with this a little and mostly under Ubuntu and that was a few years ago!
                        My own modem turned out to be supported by u3g on FreeBSD so I didn't need usb_modeswitch.

                        Does your modem have an SD card slot?

                        It looks like it's doing it's thing. From the log you see it has removed the virtual cd drive and you can see it receives the '1' response it's looking for.

                        From memory the creation of a new serial port does not generate any log entries which is why I initially thought my modem wasn't working.

                        Check the contents of /dev.
                        There are two ways in which serial ports are represented by FreeBSD and both are shown just to confuse you. Here is the output from my box before I connect my modem:

                        
                        [2.0.1-RELEASE][root@pfsense.fire.box]/dev(2): ls
                        ad0        ata        cuau0      devctl     klog       mem        ptmx       stdout     ttyu1.lock urandom
                        ad0s1      bpf        cuau0.init devstat    kmem       nfslock    pts        ttyu0      ufs        usb
                        ad0s1a     bpf0       cuau0.lock fd         led        null       random     ttyu0.init ufsid      usbctl
                        ad0s2      console    cuau1      fido       md0        pci        speaker    ttyu0.lock ugen0.1    xpt0
                        ad0s2a     crypto     cuau1.init geom.ctl   md1        pf         stderr     ttyu1      ugen1.1    zero
                        ad0s3      ctty       cuau1.lock io         mdctl      ppi0       stdin      ttyu1.init ugen2.1
                        
                        

                        And after:

                        
                        [2.0.1-RELEASE][root@pfsense.fire.box]/dev(3): ls
                        ad0          console      cuaU0.2.init devstat      mdctl        pts          ttyU0.1.init ttyu1.lock   xpt0
                        ad0s1        crypto       cuaU0.2.lock fd           mem          random       ttyU0.1.lock ufs          zero
                        ad0s1a       ctty         cuau0        fido         nfslock      speaker      ttyU0.2      ufsid
                        ad0s2        cuaU0.0      cuau0.init   geom.ctl     null         stderr       ttyU0.2.init ugen0.1
                        ad0s2a       cuaU0.0.init cuau0.lock   io           pass0        stdin        ttyU0.2.lock ugen1.1
                        ad0s3        cuaU0.0.lock cuau1        klog         pass1        stdout       ttyu0        ugen2.1
                        ata          cuaU0.1      cuau1.init   kmem         pci          ttyU0.0      ttyu0.init   ugen2.2
                        bpf          cuaU0.1.init cuau1.lock   led          pf           ttyU0.0.init ttyu0.lock   urandom
                        bpf0         cuaU0.1.lock da0          md0          ppi0         ttyU0.0.lock ttyu1        usb
                        cd0          cuaU0.2      devctl       md1          ptmx         ttyU0.1      ttyu1.init   usbctl
                        
                        

                        cua and tty devices are all serial ports. Those with a capital 'U' in the name are USB connected serial ports. You can see that my modem add three serial ports.

                        Steve

                        1 Reply Last reply Reply Quote 0
                        52 out of 52
                        • First post
                          52/52
                          Last post
                        Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.
                          This community forum collects and processes your personal information.
                          consent.not_received