On Thu, 29 Apr 2010 17:43:02 -0700 dave <[email protected]> wrote:

> The first few lines of a ktrace to the pppd process with a umodem 
> detected card reveals:
>   31129 pppd     EMUL  "native"
>   31129 pppd     RET   nanosleep 0
>   31129 pppd     CALL  ioctl(0x5,TIOCMBIS,0x7f7ffffeee64)
>   31129 pppd     RET   ioctl -1 errno 25 Inappropriate ioctl for
> device
> 
> ioctl -1 errno 25 "Inappropriate ioctl for device"
> 
> Isn't umodem supposed to make it behave as a tty?  Again this is 
> behavior seen on the last two snapshots.  It is not something I have 
> seen before...
> 
> -------- Original Message --------
> Subject: pppd- unable to set non-blocking mode
> Date: Wed, 28 Apr 2010 07:20:07 -0700
> From: dave <[email protected]>
> To: [email protected]
> 
> Hi there,
> 
> For the last two snapshots, I have started receiving the following
> output in /var/log/daemon:
> 
> Apr 28 06:17:07 puffy pppd[5388]: Couldn't set device to non-blocking
> mode: Inappropriate ioctl for device
> 
> A search of both @tech and @misc reveals only the suggestion that the
> poster's kernel and pppd are out of sync but that is not the case
> here.
> 
> A google search and reading Stevens "Advanced Programming in the Unix
> Environment" Terminal IO lead me to believe that a successful
> connection to the isp would cause the DCD to be detected and the
> serial terminal to be opened with O_RDWR...
> 
> I know that output is that is pasted above comes from
> /usr/src/usr.sbin/pppd/sys-bsd.c. Unfortuately, I cannot trace the
> code using the kdebug 2 option with pppd, so I don't know how to
> correct the inappropriate ioctl message.
> 
> Pppd still works with this output, but I don't understand what would
> have changed; I have not had this output before.  The configuration
> files have not changed either.
> 
> /var/log/daemon
> Apr 28 06:16:55 puffy pppd[5388]: pppd 2.3.5 started by dave, uid 0
> Apr 28 06:17:06 puffy pppd[5388]: Serial connection established.
> Apr 28 06:17:07 puffy pppd[5388]: Couldn't set device to non-blocking
> mode: Inappropriate ioctl for device
> Apr 28 06:17:07 puffy pppd[5388]: Using interface ppp0
> Apr 28 06:17:07 puffy pppd[5388]: Connect: ppp0 <--> /dev/cuaU0
> Apr 28 06:17:07 puffy pppd[5388]: Remote message: Congratulations!
> Apr 28 06:17:10 puffy pppd[5388]: local  IP address 166.128.66.34
> Apr 28 06:17:10 puffy pppd[5388]: remote IP address 72.215.255.9
> Apr 28 06:19:37 puffy pppd[5388]: Connection terminated.
> Apr 28 06:19:37 puffy pppd[5388]: Couldn't restore device fd flags:
> Inappropriate ioctl for device
> Apr 28 06:19:37 puffy pppd[5388]: ioctl(TIOCSETD): Inappropriate ioctl
> for device
> Apr 28 06:19:37 puffy named[18899]: shutting down
> Apr 28 06:19:37 puffy named[18899]: stopping command channel on
> 127.0.0.1#953
> Apr 28 06:19:37 puffy named[18899]: no longer listening on
> 127.0.0.1#53 Apr 28 06:19:37 puffy named[18899]: no longer listening
> on ::1#53 Apr 28 06:19:37 puffy named[18899]: exiting
> Apr 28 06:19:38 puffy pppd[5388]: tcsetattr: Inappropriate ioctl for
> device
> 
> /etc/ppp/peers/umts
> cuaU0
> 921600
> :72.215.255.9
> noipdefault
> defaultroute
> crtscts
> modem
> modem_chat
> passive
> asyncmap 0
> lock
> passive
> noauth
> user [email protected]
> connect '/usr/sbin/chat -e -f /etc/ppp/peers/umts.chat'
> 
> /etc/ppp/peers/umts.chat
> ABORT BUSY ABORT "NO ANSWER" ABORT "NO DIALTONE" ABORT "NO CARRIER"
> '' AT
> TIMEOUT 30
> '' AT+CFUN=1 T+CFUN=1
> '' OK
> '' '+PACSP0'
> 'AT+CGDCONT=1,"IP","isp.cingular","0.0.0.0",0,1'
> OK\r\n 'ATDT*99***1#'
> \r\n  \c
> CONNECT \c
> 
> I start pppd with the following function:
> 
> function pppup {
>    if [[ $# -ne 0 ]]; then
>      echo 'Usage: pppup' >&2
>      return 2
>    fi
>    if [[ -n $(netstat -nrf inet | grep default) ]]; then
>      sudo ifconfig trunk0 down && sudo route -q delete default
>    fi
>    sudo ifconfig ppp0 create
>    sudo cp /etc/resolv.conf /etc/resolv.conf.bk
>    sudo cp /etc/resolv.localhost /etc/resolv.conf
>    sudo named && pppd call umts
> }
> 
> Here is the dmesg:
> OpenBSD 4.7-current (GENERIC.MP) #225: Tue Apr 27 11:25:08 MDT 2010
>      [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> real mem = 3177910272 (3030MB)
> avail mem = 3079602176 (2936MB)
> mainbus0 at root
> bios0 at mainbus0: SMBIOS rev. 2.4 @ 0xe0010 (80 entries)
> bios0: vendor LENOVO version "6EET50WW (3.10 )" date 03/16/2010
> bios0: LENOVO 2777CTO
> acpi0 at bios0: rev 2
> acpi0: tables DSDT FACP SSDT ECDT APIC MCFG HPET SLIC BOOT ASF! SSDT
> TCPA SSDT SSDT SSDT
> acpi0: wakeup devices LID_(S3) SLPB(S3) IGBE(S4) EXP0(S4) EXP1(S4)
> EXP2(S4) PCI1(S4) USB0(S3) USB1(S3) USB2(S3) USB3(S3) USB4(S3) USB5
> (S3) EHC0(S3) EHC1(S3) HDEF(S4)
> acpitimer0 at acpi0: 3579545 Hz, 24 bits
> acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
> cpu0 at mainbus0: apid 0 (boot processor)
> cpu0: Intel(R) Core(TM)2 Duo CPU U9600 @ 1.60GHz, 1596.23 MHz
> cpu0:
> FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,SBF,SSE3,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,SSE4.1,XSAVE,NXE,LONG
> cpu0: 3MB 64b/line 8-way L2 cache
> cpu0: apic clock running at 199MHz
> cpu1 at mainbus0: apid 1 (application processor)
> cpu1: Intel(R) Core(TM)2 Duo CPU U9600 @ 1.60GHz, 1596.00 MHz
> cpu1:
> FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,SBF,SSE3,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,SSE4.1,XSAVE,NXE,LONG
> cpu1: 3MB 64b/line 8-way L2 cache
> ioapic0 at mainbus0: apid 1 pa 0xfec00000, version 20, 24 pins
> ioapic0: misconfigured as apic 2, remapped to apid 1
> acpihpet0 at acpi0: 14318179 Hz
> acpiprt0 at acpi0: bus 0 (PCI0)
> acpiprt1 at acpi0: bus -1 (AGP_)
> acpiprt2 at acpi0: bus 2 (EXP0)
> acpiprt4 at acpi0: bus 3 (EXP1)
> acpiprt4 at acpi0: bus -1 (EXP2)
> acpiprt5 at acpi0: bus 21 (PCI1)
> acpiec0 at acpi0
> acpicpu0 at acpi0: C3, C2, C1, PSS
> acpicpu1 at acpi0: C3, C2, C1, PSS
> acpipwrres0 at acpi0: PUBS
> acpitz0 at acpi0: critical temperature 127 degC
> acpitz1 at acpi0: critical temperature 105 degC
> acpibtn0 at acpi0: LID_
> acpibtn1 at acpi0: SLPB
> acpibat0 at acpi0: BAT0 model "42T4641" serial  3086 type LiP oem
> "SONY" acpibat1 at acpi0: BAT1 model "42T4642" serial   192 type LiP
> oem "SONY" acpiac0 at acpi0: AC unit online
> acpithinkpad0 at acpi0
> cpu0: Enhanced SpeedStep 1596 MHz: speeds: 1601, 1600, 1200, 800 MHz
> pci0 at mainbus0 bus 0
> pchb0 at pci0 dev 0 function 0 "Intel GM45 Host" rev 0x07
> vga1 at pci0 dev 2 function 0 "Intel GM45 Video" rev 0x07
> wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
> wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
> intagp0 at vga1
> agp0 at intagp0: aperture at 0xd0000000, size 0x10000000
> inteldrm0 at vga1: apic 1 int 16 (irq 11)
> drm0 at inteldrm0
> "Intel GM45 Video" rev 0x07 at pci0 dev 2 function 1 not configured
> "Intel GM45 HECI" rev 0x07 at pci0 dev 3 function 0 not configured
> em0 at pci0 dev 25 function 0 "Intel ICH9 IGP M AMT" rev 0x03: apic 1
> int 20 (irq 11), address 00:22:68:1a:e4:f7
> uhci0 at pci0 dev 26 function 0 "Intel 82801I USB" rev 0x03: apic 1
> int 20 (irq 11)
> uhci1 at pci0 dev 26 function 1 "Intel 82801I USB" rev 0x03: apic 1
> int 21 (irq 11)
> uhci2 at pci0 dev 26 function 2 "Intel 82801I USB" rev 0x03: apic 1
> int 22 (irq 11)
> ehci0 at pci0 dev 26 function 7 "Intel 82801I USB" rev 0x03: apic 1
> int 23 (irq 11)
> usb0 at ehci0: USB revision 2.0
> uhub0 at usb0 "Intel EHCI root hub" rev 2.00/1.00 addr 1
> azalia0 at pci0 dev 27 function 0 "Intel 82801I HD Audio" rev 0x03:
> apic 1 int 17 (irq 11)
> azalia0: codecs: Conexant CX20561
> audio0 at azalia0
> ppb0 at pci0 dev 28 function 0 "Intel 82801I PCIE" rev 0x03: apic 1
> int 20 (irq 11)
> pci1 at ppb0 bus 2
> ppb1 at pci0 dev 28 function 1 "Intel 82801I PCIE" rev 0x03: apic 1
> int 21 (irq 11)
> pci2 at ppb1 bus 3
> iwn0 at pci2 dev 0 function 0 "Intel WiFi Link 5300" rev 0x00: apic 1
> int 17 (irq 11), MIMO 3T3R, MoW, address 00:21:6a:90:67:94
> uhci3 at pci0 dev 29 function 0 "Intel 82801I USB" rev 0x03: apic 1
> int 16 (irq 11)
> uhci4 at pci0 dev 29 function 1 "Intel 82801I USB" rev 0x03: apic 1
> int 17 (irq 11)
> uhci5 at pci0 dev 29 function 2 "Intel 82801I USB" rev 0x03: apic 1
> int 18 (irq 11)
> ehci1 at pci0 dev 29 function 7 "Intel 82801I USB" rev 0x03: apic 1
> int 19 (irq 11)
> usb1 at ehci1: USB revision 2.0
> uhub1 at usb1 "Intel EHCI root hub" rev 2.00/1.00 addr 1
> ppb2 at pci0 dev 30 function 0 "Intel 82801BAM Hub-to-PCI" rev 0x93
> pci3 at ppb2 bus 21
> pcib0 at pci0 dev 31 function 0 "Intel 82801IEM LPC" rev 0x03
> ahci0 at pci0 dev 31 function 2 "Intel 82801I AHCI" rev 0x03: apic 1
> int 16 (irq 11), AHCI 1.2
> scsibus0 at ahci0: 32 targets
> sd0 at scsibus0 targ 0 lun 0: <ATA, TOSHIBA THNS128G, AGLA> SCSI3
> 0/direct fixed
> sd0: 122104MB, 512 bytes/sec, 250069680 sec total
> ichiic0 at pci0 dev 31 function 3 "Intel 82801I SMBus" rev 0x03: apic
> 1 int 23 (irq 11)
> iic0 at ichiic0
> usb2 at uhci0: USB revision 1.0
> uhub2 at usb2 "Intel UHCI root hub" rev 1.00/1.00 addr 1
> usb3 at uhci1: USB revision 1.0
> uhub3 at usb3 "Intel UHCI root hub" rev 1.00/1.00 addr 1
> usb4 at uhci2: USB revision 1.0
> uhub4 at usb4 "Intel UHCI root hub" rev 1.00/1.00 addr 1
> usb5 at uhci3: USB revision 1.0
> uhub5 at usb5 "Intel UHCI root hub" rev 1.00/1.00 addr 1
> usb6 at uhci4: USB revision 1.0
> uhub6 at usb6 "Intel UHCI root hub" rev 1.00/1.00 addr 1
> usb7 at uhci5: USB revision 1.0
> uhub7 at usb7 "Intel UHCI root hub" rev 1.00/1.00 addr 1
> isa0 at pcib0
> isadma0 at isa0
> pckbc0 at isa0 port 0x60/5
> pckbd0 at pckbc0 (kbd slot)
> pckbc0: using irq 1 for kbd slot
> wskbd0 at pckbd0: console keyboard, using wsdisplay0
> pms0 at pckbc0 (aux slot)
> pckbc0: using irq 12 for aux slot
> wsmouse0 at pms0 mux 0
> pcppi0 at isa0 port 0x61
> midi0 at pcppi0: <PC speaker>
> spkr0 at pcppi0
> aps0 at isa0 port 0x1600/31
> mtrr: Pentium Pro MTRR support
> umodem0 at uhub1 port 4 configuration 1 interface 1 "Ericsson Ericsson
> F3507g Mobile Broadband Minicard Composite Device" rev 2.00/0.00 addr
> 2 umodem0: data interface 2, has CM over data, has break
> umodem0: status change notification available
> ucom0 at umodem0
> umodem1 at uhub1 port 4 configuration 1 interface 3 "Ericsson Ericsson
> F3507g Mobile Broadband Minicard Composite Device" rev 2.00/0.00 addr
> 2 umodem1: data interface 4, has CM over data, has break
> umodem1: status change notification available
> ucom1 at umodem1
> umodem2 at uhub1 port 4 configuration 1 interface 9 "Ericsson Ericsson
> F3507g Mobile Broadband Minicard Composite Device" rev 2.00/0.00 addr
> 2 umodem2: data interface 12, has CM over data, has break
> umodem2: no data interface
> uvideo0 at uhub0 port 6 configuration 1 interface 0 "Chicony
> Electronics Co., Ltd. product 0x4807" rev 2.00/31.34 addr 2
> video0 at uvideo0
> ugen0 at uhub2 port 2 "AuthenTec Fingerprint Sensor" rev 2.00/17.03
> addr 2 vscsi0 at root
> scsibus1 at vscsi0: 256 targets
> softraid0 at root
> root on sd0a swap on sd0b dump on sd0b
> 
> Any suggestions?
> 
> TIA,
> Dave
> 

>From your email message headers, I'm guessing you're in Las Vegas, and
it seems you're using AT&T/Cingular.

Most of the devices used to connect to cellular data networks actually
have at least two (2) ways you can talk to the device. Typically, there
is at least one serial interface which accepts AT Commands. This serial
port is where ppp(1) makes its connection to the network. For the sake
of clarity, I'll call this the "ppp serial port."

The additional ways to talk to the device is where things start to get
very complicated. They take three possible forms 
1.) Additional serial ports on the device (see umsm(4)), 
2.) Commands multiplexed onto the ppp serial port (umodem(4)).
3.) Additional "ports" which work similar to serial ports (see
the note in umodem(4) about "separate pipes" that are not currently
supported).

The additional ways to talk to the device are for "management" purposes
but little is really known about them. *Some* (but not all) of these
management interfaces are just serial ports controlled through
special/proprietary AT Commands while others use proprietary protocols.
In the case of Qualcomm devices, the non-AT ports usually speak DM
(Diagnostic Monitor) or QMI (Qualcomm MSM/Modem Interface), but both of
these protocols are proprietary and undocumented.

It seems linux either skipped multiplexing we do in umodem, or more
likely, I have no clue where in their tree it exists. None the less, it
seems the linux folks may have figured out a different way to handle
this hardware, namely, separating the various ports within a hardware
device into separate system devices such as Qualcomm Auxiliary Serial
Port (qcaux.c).

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=drivers/usb/serial/qcaux.c;h=0b93620617138d11ff467c242c609ca78e1efffb;hb=HEAD

I'm not sure if the above is relevant to your Ericsson F3507g.

Though umodem mostly works, the hardware may not need/understand
multiplexed commands correctly, or we need to teach umodem to separate
out the various ports/pipes into individual devices (like umsm) rather
than only giving a single serial port... ? --which kinda trashes the
concept of multiplexing.

If you look at the following, you'll see linux treating F3507g as a
whole bunch of devices:
http://www.thinkwiki.org/wiki/Ericsson_F3507g_Mobile_Broadband_Module

I really don't know what the right approach is, but treating the whole
thing as a single serial port with multiplexing could be the reason why
the attached tty doesn't respond properly.

I only have one umodem(4) device here, a Pantec (UTSTARCOM) UMW190, and
I only just got it a few days ago. Later today I'll toss the current
snap on a box to see if I can replicate the error message you got. It's
not likely with the differences in devices and providers. I *think*
yours is a Gobi 1000 or 2000 device, while mine is a MSM7k series.

If you could replicate the error message with just ppp(8) rather than
pppd, it could be helpful.

        jcr

p.s. You might enjoy the blog of Dan Williams from RedHat:
http://blogs.gnome.org/dcbw/

-- 
The OpenBSD Journal - http://www.undeadly.org

Reply via email to