-------------------------------------------------------------------------------- ISDN4BSD Frequently Asked Questions =================================== last edit-date: [Fri Dec 25 19:59:21 1998] -------------------------------------------------------------------------------- Contents: ========= 1. How do I get started with synchronous PPP (sPPP) ? 2. does anyone know a software that can receive/send fax over ISDN ? 3. does i4b callback only work with setups where the remote end returns a busy ? 4. trouble with kernel options IPFIREWALL and IPDIVERT and natd 5. I want to use -r with isdnd but it does not work 6. How do I configure and run the answering machine ? 7. Teles S0/16.3 ... unknown ? 8. How do i integrate a new lowlevel driver into i4b ? 9. Why it always says "no Space in TX FIFO - State F4 awaiting" ? 10. Incoming alert - what does it mean ? 11. How do i change irq's on my teles 16.3 card ? 1. How do I get started with synchronous PPP (sPPP) ? ================================================================================ Of course you first have to have sPPP interfaces in your kernel. If you installed everything using FreeBSD/install.sh then the correct entries should have been automatically made in /sys/conf/files for you. For NetBSD it isn't quite as simple since NetBSD/install-netbsd.sh does not do it for you. Then all you need to do is put an entry like this: pseudo-device "i4bisppp" 4 into your kernel configuration file (if it's not already there) and generate and boot the new kernel. The above line will give you 4 sPPP interfaces - isp0 to isp3. Then just modify /etc/isdn/isdnd.rc (see the example in etc-isdn/isdnd.rc) to suit your needs (telephone numbers, etc). The next step is to read the spppcontrol man page and then to look at etc/rc.isdn-PPP. spppcontrol is a very important component in getting sPPP working correctly and the spppcontrol lines in your /etc/rc.isdn must be correct. In my experience there are two things which can cause problems: 1) the authproto line has to agree with what your ISP desires. In general I've found that it's best to have something like this - spppcontrol myauthproto={pap,chap} myauthname= myauthsecret= hisauthproto=none callin The "hisauthproto=none" is usually needed because the ISP does not want to authorise himself to you; he expects you to authorize yourself to him ! I once forgot to set hisauthproto and it took me quite a while to figure out why I couldn't connect. 2) the IP address at your ISP's end must be correct. How can I find out (1) whether my ISP wants pap or chap and (2) what his IP address is ? you might ask. Generally, your ISP should have provide this information to you. But, if he didn't, or you've mislayed the documentation (as I did), there's still hope. Fortunately, J"org Wunsch implemented the sPPP kernel code so that it provides all the information required if the interface is configured with the debug flag set (e.g. ``ifconfig isp0 debug''). It's just a little cryptic. By the way, I suggest turning the debug flag on until you have things working and then turning it off. The debug output is rather voluminous and could fill up your /var partition, otherwise. The debug output will appear on the console and also be logged to /var/log/messages (under FreeBSD) unless you changed /etc/syslog.conf. A. How to figure out the authproto ---------------------------------- Here is an example where I configured isp0 with myauthproto=pap, my ISP wanted chap, but was willing to accept pap: /kernel: isp0: lcp up(starting) /kernel: isp0: lcp output /kernel: isp0: lcp input(req-sent): ^^^^^ |___ c223 is chap, it's what the ISP wants to use /kernel: isp0: lcp parse opts: 0x0 [rej] mru auth-proto 0x11 [rej] x13 [rej] send conf-rej (I didn't agree) /kernel: isp0: lcp output /kernel: isp0: lcp input(req-sent): /kernel: isp0: lcp input(ack-rcvd): /kernel: isp0: lcp parse opts: mru auth-proto /kernel: isp0: lcp parse opt values: mru 1524 auth-proto [mine 0x0 != his chap] send conf-nak (we want to use pap, not chap) /kernel: isp0: lcp output ^^^^^ |___ c023 is pap /kernel: isp0: lcp input(ack-rcvd): (he agrees to use pap) /kernel: isp0: lcp parse opts: mru auth-proto /kernel: isp0: lcp parse opt values: mru 1524 auth-proto send conf-ack /kernel: isp0: lcp output he agrees to use pap ___|^^^^^ so, if you have problems in the lcp phase, check which authentication method your ISP wants to use. Usually chap is prefered, but pap will be accepted. B. How to figure out the ISP's IP address ----------------------------------------- I also intentionally configured the interface with the wrong address for my ISP, like this: ifconfig isp0 0.0.0.0 10.0.0.1 debug link1 this means that I want the ISP to assign me an address (the 0.0.0.0) and that I expect him to use 10.0.0.1 (which is wrong). Here's the result: (note that these addresses have been changed by me) /kernel: isp0: phase network /kernel: isp0: ipcp open(initial) /kernel: isp0: ipcp up(starting) /kernel: isp0: ipcp output /kernel: isp0: ipcp input(req-sent): /kernel: isp0: ipcp parse opts: compression [rej] address send conf-rej /kernel: isp0: ipcp output /kernel: isp0: ipcp input(req-sent): /kernel: isp0: ipcp nak opts: address [wantaddr 12.34.56.78] [agree] ^^^^^ |___ he assigns me this /kernel: isp0: ipcp output /kernel: isp0: ipcp input(req-sent): /kernel: isp0: ipcp parse opts: address /kernel: isp0: ipcp parse opt values: address 98.76.54.32 [not agreed] ^^^^^ |_this is *his* address send conf-nak /kernel: isp0: ipcp output I expect a different address and (incorrectly) reject what he wants. I tell him that I expect 10.0.0.1. After this the connection fails. Anyway, I now know that his address is really 98.76.54.32 and can use it to correctly configure the interface. With the correct IP address I shoulkd now be able to connect with no problems. As stated above, the authorization protocol is normally not so important since most ISPs are willing to use pap, although chap is more secure. Generally, I'd try chap first and only switch to pap if the ISP doesn't accept it. (by Gary Jennejohn, Home - garyj@muc.de, Work - garyj@fkr.dec.com) 2. does anyone know a software that can receive/send fax over ISDN ? ================================================================================ > Hi, > > does anyone know a software that can receive/send fax over ISDN? I am > using a Fritz!Card, which can handle group 3 (analogous) fax, but I > can't find any hint in the i4b software that this is supported in any > way. This is probably not implemented. Implementing G3 fax in ISDN would mean simulating an analog modem on the digital link. This means having to generate the right waveforms for the modulated data, and receive analog data from the other end which you had to run FFT analysis on and then interpret. In addition you have to do this in realtime, to be able to deal with the timing involved in the fax protocol, something neither FreeBSD or Linux is good at in their native form.. A third point is that a software simulated faxmodem usually does not work well. I tested Teles software faxmodem in Win-95 towards an Ericsson V34 HE modem, and was able to send faxes from the ISDN card at 4800 baud only, and receive faxes ad 9600 baud only(!) (And it is not the Ericsson modems fault, it works flawlessly towards other fax machines.) My point is that the best thing to do is to use an ordinary faxmodem to handle faxes with Hylafax of mgetty+sendfax or efax, or you may use a combined ISDN card with an analog part. Of course, if you are crazy enough, you may try to implement a software simulated modem in e.g. RT-linux, or a similar realtime extension for FreeBSD. Best regards, Nils Ulltveit-Moe (etonumo@eto.ericsson.se) 3. does i4b callback only work with setups where the remote end returns a busy ? ================================================================================ > Is my assumption correct, does i4b callback only work with setups where > the remote end returns a busy on the dialin? Yes - otherwise you'll pay for the connection, at least here in Germany. Most routers support two kind of callbacks - the one that i4b supports means: the called system rejects (so no charge for this connection), waits a configurable time and the calls back. Information on who has called and who is to be called back relies on the ISDN calling party number information and stuff statically configured in the routers (or isnd's) configuration. The other type of callback (not supported by i4b right now) means: the called system accepts the connection and starts ppp negotiation. During this the ppp's aggree to do a callback. Information on who called in and who is going to be called back is subject to the authentication/negotiation already done by the two ppp's. Then ppp closes down, the connection is disconnected and the called system calls back. I've never seen someone actually use the second type due to its obvious disadvantages. It may be usefull if you travel, call in from an unknown number and want to be called back at that number. Martin Husemann 4. trouble with kernel options IPFIREWALL and IPDIVERT and natd ================================================================================ NOTICE: section obsolete since IP address changes are handled properly now! =========================================================================== This section > Trying to build a router/gateway between my privat Ethernet and > the Internet (via my ISP), I have problems with I4B or NAT (I think:). > > The 2.2.5-R kernel with options IPFIREWALL and IPDIVERT works fine > with ISDN4BSD 0.50-alpha and firewall rule 'pass all from any to any'. > However, when I add 'divert natd all from any to any via isp0' > and start natd, name server lookups to the ISP's NS don't work. > > Also, ping and nslookup fails from any other internal host. I had exactly the same problems. natd doesn't seem to get a message if the IP address of the interface changes (after successful dialout). I have to manually send a HUP signal to natd. I do this via the following (ugly?!) hack: I added the following two lines to the system section of isdnd.rc: regexpr = "call active" # look for matches in log messages regprog = hup_natd # execute program whan match is found The small script "hup_natd", located in /etc/isdn, looks like: #!/bin/sh pid=`cat /var/run/natd.pid` kill -HUP $pid sleep 3 kill -HUP $pid sleep 5 kill -HUP $pid It looks ugly, but at least for me it works. The two sleeps are necessary since I have to wait for ppp negotiation to complete (I don't get a message from isdnd for that). If I'm lucky I have my connection after 3 seconds, but 8 seconds should suffice for worst case (the first HUP without a sleep sometimes even succeeded on an slow 486/33 with 8MB RAM, more HUPs don't hurt). I'm really interested in some more elegant method. Daniel (rock@cs.uni-sb.de) Arve Ronning replied: ===================== > I had exactly the same problems. natd doesn't seem to get a message if > the IP address of the interface changes (after successful dialout). Well, it (natd) _does_ pick up the dynamic address supplied for isp0. Try 'natd -verbose ...' and you'll see it. Otherwise I agree, there is certainly something missing in natd's functionality, or maybe sppp does'nt supply what it's supposed to ?? > I have to manually send a HUP signal to natd. I do this via the following > (ugly?!) hack: YES...super; strange but correct. It works when I send natd a -HUP after sppp is up. Thanx for the tip. However, natd must be -HUPed _every_ time sppp has been down (idle timeout) and comes back up! > I'm really interested in some more elegant method. So am I, let's see what may come out of the discussion on the list. 5. I want to use -r with isdnd but it does not work ================================================================================ > > Use isdnd in fullscreen mode. > > I tried that already, but got an error when I start isdnd that way: > > /usr/local/bin/isdnd -d 0xf9 -f -r /dev/ttyv1 -t cons25 > > root is logged in on device /dev/ttyv1, the message in /var/log/messages looks like: > > "May 22 11:52:28 asterix isdnd[4160]: ERR ERROR, cannot setup tty as controlling terminal: Operation not permitted" > > How can I give this device permission ? In case you want to use switch "-r" noone else _must_ use the tty you redirect to, you have to remove the getty from the virtual terminal in /etc/ttys and restart the init process. 6. How do I configure and run the answering machine (under FreeBSD 2.2.x) ? ================================================================================ The answering machine will be activated, when isdnd executes the program that has been named in "/etc/isdn/isdnd.rc" in the section "telephone answering" at entry "answerprog = ". If the program is executed without a pathname, the answer program is expected in "/etc/isdn". Examples of such programs can be found in "/etc/isdn/samples". They are named: "answer" answers only, no recording "record" answers, and records messages "tell" the number of the calling person is told, no recording. "tell-record" calling number as answer, message is recorded "isdntel.sh" answers and records messages; by using the program "isdntel", one has the control over the recorded messages in the directory "/var/isdn". Look at "man isdntel" and "man isdntelctl". These programs have to be altered to suit your needs. Unfortunately there is no program with which you can record your answer message. This is not really bad, because you only have to alter the above mentioned program "record" a bit (comment out the "if ... fi" statements for the beep and msg messages). You have to create the directory "/var/isdn" first in order to record messages. They will be stored in this location then. Stefan Herrmann 7. Teles S0/16.3 ... unknown ? ================================================================================ Hi, I have just purchased a Teles S0/16.3 card. But it's not what i4b is looking for .... I mean, it's a different card. The docs (and sources)of i4b talks about a Telws S0/16.3 card with 3 address: d80 etc. This one (is not PnP) has jumpers for 0x180 0x280 0x380. It has the SIemens Chips numbered PSB 21525 N (HSCX TE V2.1) and PSB 2186N V1.1 (ISAC-S TE). I undestand that the 16.3c is not supported, but over this board is written "TELES.S0/16.3 Revision 1.3" Can anybody tell me what is this card ??? answer: ------- It's not a different card. The jumpers are documented to select IO-address 0x180, 0x280 or 0x380 in some TELES manuals. But in fact they select the addresses 0xd80, 0xe80 or 0xf80. Wolfgang And an additional note from Poul-Henning Kamp: ---------------------------------------------- There is an intricate story behind this, in short some ISA cards only decode the first 10 address bits (0x3ff), which over the years has resulted in a mutation the "de-facto-spec" such that addressbits 10-15 can be used by the card for selecting various stuff. This is extensively used on obscure cards with massive IO needs, sound, IEEE488 and ISDN cards often belong in this category. 8. How do i integrate a new lowlevel driver into i4b ? ================================================================================ 1) Request a flag value from me 2) add an entry for the card into FreeBSD/CONFIG 3) add driver filename to FreeBSD/files.i386.cat 4) add entry for the card to FreeBSD/options.i386.cat 5) add support to print type of card to diehl/diehlctl/main.c 6) add support to print type of card to isdnd/support.c, name_of_controller() 7) place your file as named in 3) into directory layer1 8) add the flag value and function prototypes to layer1/i4b_l1.h 9) add support for NetBSD to layer1/isa_isic.c 10) add support for attach/probe to layer1/i4b_isic.c 11) add card type to machine/i4b_ioctl.h and update CARD_TYPEP_MAX 12) add an entry to the man page man/isic.4 Produce diffs (please use context diffs, flag "-c" for diff) and send them in. 9. Why it always says "no Space in TX FIFO - State F4 awaiting" ? ================================================================================ as I wrote about two weeks ago I had massive problems concerning this "no space in TX FIFO"-thing, /kernel: i4b-L1-ph_data_req: No Space in TX FIFO, state = F4 Awaiting Signal Even though I used a correctly recognized Teles S0/16.3 nonpnp isdncard, nothing worked, errormsgs were flooding the console until I rebooted the box. I decided to play around in the BIOS-settings, I first just set them all to default, which didn't work, and then changed lots of things - unfortunately I can't remember them. After about hundreds of trial 'n errors I gave up. A few days ago I just made another attempt, booted the box and to my surprise it all worked without the smallest problem, great data rates :) I tried hard to found what the something special was I changed in the BIOS settings, but I just couldnt get isdnd back to its stupid behaviour it showed all the time before, but I would recommend everybody who has this kind of problem to look into his BIOS. (from Meike Aulbach, strange@stoned.rhein-main.de) i4b now works for me, I had a USB-device interfering on IRQ 9, which was supposed to be only for my Creatix Card. (NetBSD 1.3, Creatix) Strange enough, my DOS s0-test worked, are they just polling the card? Even when the testsoftware under DOS is working, don't be shure, that your hw-setup is correct for xxx(x)BSD. Triplecheck all your IRQ and enable and disable PNP to triple-verify. Even unconfigured devices can block your card. ..... And that took me more than 2 months to discover :-(((( (from Andreas Lohrum, andreas.lohrum@consol.de) when i changed the mainboard of a box that ran i4b alright, i forgot to set 'used by isa' in the pnp-bios-settings for the irq of my teles isdn-card. because of that some pci-card got the interrupt that the isdn-card should have gotten. i then also got this error: 'No space in TX FIFO'. The reason occurred to my rather quick, but i would think, that this would be a nice hint in a FAQ :) (from Heiko Schaefer, hschaefer@fto.de) after my huge amount of problems, Meike's hint (changing the ISA/PNP-settings in the BIOS) finally fixed things. I have only tried out this stuff with my Creatix-card, I'll check out the PNP-stuff with my Sedlbauer-card soon too though. (from Harold Gutch, logix@foobar.franken.de) 10. Incoming alert - what does it mean ? ================================================================================ In the log on vty6 (isdnd full screen log) I'm seeing 16.07.98 11:42:35 CHD 00001 rwth rate 90 sec/unit (rate) 16.07.98 11:42:35 CHD 00001 rwth dialing from 4191236 to 441291234 16.07.98 11:42:35 CHD 00001 rwth outgoing call proceeding (ctl 0, ch 0) 16.07.98 11:42:35 CHD 00001 rwth incoming alert <<<<<<<<<<<<<<< 16.07.98 11:42:35 CHD 00001 rwth outgoing call active (ctl 0, ch 0) What does this 'incoming alert' mean? It means that it is "ringing" at the remote end. 11. How do i change irq's on my teles 16.3 card ? ================================================================================ Question: So how do you change irq's on your teles 16.3 card (under FBSD or DOS, I don't have and don't want to have Windows running on that computer) ? Answer: The irq is configured into the card each time the driver under whatever OS you currently boot initializes the card. Thus, change the irq for the isic driver in your kernel config file to one of the supported (!) irqs for this card (hint: read "man isic") which is currently unused in your machine and generate a new kernel.