Editors note: The DMA problems described below can be eliminated on fast ( 150 mhz and up) CPUs by using the dmascc.c driver under Linux in interrupt mode. See also: PackeTwin HOWTO

> Brian, Steve, Dale, John, Barry and other pi-users,
> First, my apologies for not responding and thanking each of you sooner.
> I most certainly appreciate your comments and have found each of them of
> value in getting things working, as they are now.  Here is a recap of my
> problem and the solution(s) which, with your help, I have found so far.
> The Problem
>   My original problem was discovered while trying to get a PI2 rev A
> card to work in a new PII 440BX motherboard ( a Soyo 6BB ).  The problem
> showed up as I began to migrate all of our RF hosts from DOS/JNOS, under
> which they've been running for many years, to Linux.  I was trying to
> first get two Linux boxes up, driving PI cards and 230 kbps radios
> across the bench in the shack.
>   The host santarosa.ampr.org has run full time as 386/JNOS and I was
> trying to use n6gn.ampr.org, the PII, running with PI to develop code
> for Linux.  Santarosa was available to test against, either in DOS or
> Linux.  However I discovered that with either Linux or even JNOS the PI
> card didn't run properly in the new PII and it was then that I posted
> here asking for help and ideas.
>   I had put this whole task off largely because of the time it's taken
> me to get sufficiently up to speed in Linux and because it required
> modifying the PI card driver for Linux to operate with internal clock
> recovery at 230 kbps, as I did years ago for JNOS.  I'm afraid the delay
> caused me to forget some of the things I learned back then.
> To help sort this out ( in case anyone else goes through this again)
> there are a number of variables:
> PI2 card type; rev A or rev B
>   We have a number of PI2 cards within the 'system' here, the bulk are
>   PI2 rev A but we do have a couple of Rev B cards.  The B cards have
>   the bus timing jumpers in the lower left corner as well as the
>   BRG/xtal jumper at J14.  The B cards have new PALs as well.
> PI Driver Code
>   Dave Perry's PI2.C is available for both JNOS and Linux.  In addition
>   to Dave's code, I asked this group several months ago and found that
>   Klaus Kudielka's dmascc code is being used by some of you.  There was
>   a variety of opinions about whether pi2.c was working well under Linux
>   or not.  Klaus's code also supports Gracilis cards and was reported to
>   work well with PI2.
> Host Computer CPU/Motherboard
>   Our arrangement here varies but includes or has included 386, 486,
>   pentium and PII(slot 1) CPUs.  It was the PII 440BX board that
>   precipitated this problem.
> Host OS
>   We've run JNOS 1.11x1GW0.2 for many years on all the machines but I
>   discovered that in the time since the last compile I'd lost the
>   modified pi2.c driver I used to build it.
>     The goal was to get the whole system entirely free of DOS.  Both
>   n6gn and santarosa hosts (as well as k6hsj and a new machine for
>   redwood.ampr.org) have RH 5.0 or 5.1 installed and can dual-boot DOS
>   or Linux.
> We didn't excercise all permutations of the above variables but perhaps
> those we did hit will save someone some grief.
> > From: Brian Mullaney 
> >
> > Just an idea, and one you have probably already tried, at that:
> >
> > There should be DMA/timing parameters in the BIOS, you might try changing
> > them to the slowest/most conservative settings
> >
> > Or try to dig up some older 486 MBs ;-)
> Brian,
> Well, as it turns out I *hadn't* tried it. In fact I'd hardly poked around
> in configuring the new 440BX board. Although I could find little control
> over the DMA or buss, in the processing of looking to see what I could
> do I learned quite a lot about the board. I still don't know much but the
> tip was definitely helpful in getting me started.
>   Also, as it turns out, we've ended up migrating two of the old systems
> from 386DX40 to 486 and used the PI2_A cards with no problems.  So while
> I don't have a list of the (several) different 386/486 motherboards that
> we tried or are using, every one of them worked fine with the rev A
> cards.
>   The current solution for the 440BX board is one of expedience; make
> sure to use one of the PI2_B cards.
> >
> > From: Steve Platt 
> >
> > This appears to be a well known problem with the linux PI2 driver.
> > It seems to xmit corrupt frames on the (DM)A port, but is fine on
> > the B port.
> >
> > There is an alternative driver, called "dmascc" which some people
> > have said avoids the problem.
> >
> > I do not know what efforts are being made to integrate this alternative
> > driver with the linux source tree.
> >
> > So, you could try "dmascc" and if it works perhaps your evidence
> > and good name will persuade someone to consider changing the linux
> > pi2 driver.
> >
> Steve,
>   This looks like an excellent idea, though I may have lost a little
>   incentive to pursue it now.  This is because after getting the PII
>   machine happy with a PI2_B card I was able to reconstruct my
>   modifications to Dave Perry's pi2.c and I'm now very happy to report
>   that I have both n6gn and santarosa machines entirely free of DOS and
>   able to drive the 230 kbps radios very well; even better than they
>   were with the JNOS code (a matter of the removal of some hardcoded
>   100ms holdoffs in Dave's old code).
>   santarosa.ampr.org is the 7x24 switch/router and seems to be running
>   fine.  I may yet find a problem with the pi2.c code that causes me to
>   want to migrate to dmascc but at the moment performance is very good,
>   no lost packets and very high throughput (at least with pings) via RF
>   across the shack as well as very good performance to the hilltop
>   router, redwood.ampr.org.
>   As soon as I've prettied up and "regression-checked" the new code,
>   I'll post the changes in case anyone else wants to be able to do
>   230kbps on PI with Linux.
> >
> > From: "Dale Heatherington" <56k@wa4dsy.net>
> >
> >
> > Yep, it sounds like the DMA (or is it DAM(n)) timing problem too me.
> > The only cure I know of is to try one of the PI2 cards which have a higher
> > likelyhood of working.
> Dale,
>   As you can tell from the above, you were right on with your diagnosis.
> Also, if I remember right, you were one who previously reported good
> results with the Linux pi2.c code at 56K.  It's still a bit early but my
> experience so far seems to verify this.
> >
> > From: John Ackermann N8UR 
> >
> >
> > I recently had similar problems trying to get an original PI1 card
> > working on fast(er) 486 motherboards.  In that case, substituting an
> > 85C30 for the original 8530 did the trick.  I tried the old timing hack
> > (add a cap and resistor in the DDIOW line) and, at least when using the
> > 8530, that did no good.
> >
> > I know this isn't directly relevant to your problem, but it may help
> > nail down your suspicion of a timing problem.
> John,
>   It may be very relevant after all.  I haven't yet tried this since at
> this point we still have enough PI2_B cards to match new motherboards
> but it may be necessary as we upgrade (and I seem to be time-constrained
> (:>) ).
>   I think that in our case that there are already 85C30s in all the
> cards.  Perhaps the 8530 was only in the original PI (not PI2) card.
> It's interesting that you had no help from the RC delay.  Maybe Barry's
> comment (next) is the avenue to follow for anyone trying to solve this.
> It is the one obvious difference between the working and non-working
> cards on my PII.  I'd certainly be interested to know if anyone actually
> looks at bus timing on a BX or other new board.  I don't have sufficient
> tools at home to do this (though I could measure the S Parameters of
> the bus (:>) ) .
> > From: bm@lynx.ve3jf.ampr.org
> >
> > This does certainly sound like ye olde DMA timing problem (one of the
> > banes of my existence - sigh).  It wouldn't be too hard to hack in the
> > delay circuit from the B design onto an A card to try it out... ugly,
> > but not too hard.  If you don't have a B schematic, it's available at
> > ftp://hydra.carleton.ca/pub/hamradio/packet/tcpip/pi2/.  Even that fix
> > doesn't cure the most stubborn cases, though.
> >
> > Too bad USB didn't debut a few years sooner... might have been a better
> > way to go.
> Barry,
>   Thanks for the confirmation and the pointer to the B schematic.  I was
> just posed ready to hack up an older card when k6hsj arrived with one
> of the two PI2_B's in our system and I was able to avoid the effort.  I
> suspect that change, the addition of the selectable delay, is probably
> the difference between working and not.  However, I have not analysed
> bus timings nor even looked to fully understand them.  I'm interested in
> any further information anyone has.
>   You're no doubt right that we would be better off looking to a
> different mechanism for future higher speed data pipes into modern
> computers.  I'm not sure that USB is really fast enough for what we
> might want to do to be attractive.  But whether or not I'll get around
> to trying out my ideas at putting 100Base onto RF and/or laser light is
> another matter!  I think we're all somewhat tired out.
> All,
> So, in summary, watch out for PI2_A cards on 440BX motherboards. Try
> to use a PI2_B card or, failing that, if/when it doesn't work try
> adding the selectable delay circuitry from Barry's page above.
> Thank you all for your thoughts and help. I appreciate it a lot.
> I'll be posting the revised pi2.c code as soon as I'm confident that
> I haven't broken any thing ( my changes were pretty minor but I'm
> pretty efficient at breaking things  (:>) ).
> 73
> Glenn n6gn

Additionally,  there is a analysis from someone who tested it in Vancouver who
added a additionally delay one of the DMA lines which should be in this lists
archives.  If necessary, I might be able to get it from backup.