Having issues getting pfsense to recognize a Seagate Microdrive. Help!



  • We have 2 1U servers here we're using in a carp design with pfsense 1.01 and they were working great using 128MB Sandisk flash cards.  I decided to buy 2 Seagate 4GB ST640211CF Microdrives but for some reason pfsense doesnt recognize these drives at all.  I can write the card fine in my CF reader and the bios recognizes them correct.  I was able to run Seatools diagnostics on them so I dont think its an issue with the IDE interface moreso than Freebsd 6.x.  Whats strange is that I tried the m0n0 1.22 livecd and that recognized the drive.  It errors out while loading the kernel, does an ata reset and then it recognizes the drive.  Here's a little bit of detail from the m0n0 log:

    ad0:  timeout waiting for interrupt
    ad0:  enabling readahead cache failed
    ad0:  timeout waiting for interrupt
    ad0:  enabling write cache failed
    ad0:  READ command timeout tag=0 serv=0 - resetting
    ata0:  resetting devices .. done
    ad0:  3906MB <st640211cf>[7936/16/63] at ata0-master PIO4

    Also I dont know if it makes any difference but the BTX loader sees BIOS DRIVE C: as disk0 on both pfsense and m0n0.  pfsense doesnt give me any details as to whats going on with it.  It doesnt seem as if its even attempting to read the BUS but it does pick up the cdrom of course at the GEOM stage.  Does anyone think there's anything I can do to force it to pick up the drive?  Maybe pass a kernel parameter that i'm not aware of?  I searched through the pfsense and m0n0 mailing lists as well as the freebsd mailing lists but havent found anything definitive about this issue.  I'd really like to use these drives so I can run a full pfsense install and use freeradius with openvpn.

    Any help would be greatly appreciated!

    Thanks in advance!</st640211cf>



  • Ok this is really frustrating now.. How in the world can this work under freebsd 4.11 but not in 6.x?!  I cant find compiled 4.x drivers anywhere and I just tried a different controller card with a different chipset thinking it may just be shoddy controller support but it's doing the same thing with a maxtor PCI IDE card which leads me to believe its simply the ata driver in freebsd 6.x.. Does anyone have any ideas as to what I can do at this point?



  • Possibly it's a DMA issue - you may need to disable DMA:

    http://wiki.pfsense.com/wikka.php?wakka=BootOptions

    I've seen this on other hardware where PIO would work fine but as soon as you switched on DMA disk access became unstable.

    Note that I have a (Fujitsu ISTR) Microdrive working just fine with pfSense, so it's certainly possible with some hardware combinations.  One test would be to use a FreeBSD 6.2 boot CD to see if that sees the drive.



  • yes I did that and it still doesnt work.  I did notice that in m0n0 1.22, it forces PIO automatically but if I disable DMA at boot time it doesnt pick up the drive.  There's nowhere for me to disable DMA in the BIOS either.. I tested it with m0n0 1.3b2 and that didnt work either so it is a freebsd issue.  What could I do from here aside from returning the drive and trying another brand?  Could I possibly recompile pfsense using the 4.11 ata.c, ata-disk.c and so on?  Will that even work or will that create a whole other list of dependency issues?



  • I'd go with testing with a FreeBSD 6.2 boot/install CD.  If that too fails to find the card then, if you care enough, I'd suggest filing a bug report with the FreeBSD folks and working with them to get it working.  You may also want to check and see if HEAD (FreeBSD-7) or one of the older 6.x releases (6.1 and 6.0) work with it (and 5.0 through 5.4 if you've time) to help them identify when it stopped working with FreeBSD.



  • I am going to file a bug report.  These systems need to go into production ASAP so i'm kinda under a tight deadline.  I ended up purchasing an internal CF reader that came with a motherboard usb header cable.  I was able to get pfsense 1.01 to read the Microdrive using the USB reader but the only other problem was because this hardware is older, it wont boot off USB devices.. So…. I ended up having to keep a 128mb flash in there with the pfsense kernel to boot from and changed the fstab entry to the Microdrive.. Does that sound like it's going to be ok?  Right now it loads the kernel off the 128MB CF, then drops to the Microdrive for the filesystem.

    It complicates my setup but thats about the best I could come up with without hacking the kernel and all that.  I am going to file that bug report and then maybe find some resolution for this so I wouldnt have to go to such extremes.  Whats strange is, I was able to write the Microdrive with my home pc using the pfsense livecd.  I brought the Microdrive to work and was able to boot from it to the point where it tries to load the filesystem.  Even though it had just booted from the microdrive, the kernel was unable to recognize the filesystem on the Microdrive so that was weird.  I think its a combination of the CF reader that came with this box AND Freebsd thats causing it not to read correctly.  Right now its booted and working fine in my tethered setup though.  I only went through all this so I could install Freeradius and have openvpn authenticate against that, thats the only reason I bought the microdrive in the first place.

    Thanks for the ideas though!



  • @j0emv:

    I am going to file a bug report.  These systems need to go into production ASAP so i'm kinda under a tight deadline.  I ended up purchasing an internal CF reader that came with a motherboard usb header cable.  I was able to get pfsense 1.01 to read the Microdrive using the USB reader but the only other problem was because this hardware is older, it wont boot off USB devices.. So…. I ended up having to keep a 128mb flash in there with the pfsense kernel to boot from and changed the fstab entry to the Microdrive.. Does that sound like it's going to be ok?  Right now it loads the kernel off the 128MB CF, then drops to the Microdrive for the filesystem.

    It complicates my setup but thats about the best I could come up with without hacking the kernel and all that.  I am going to file that bug report and then maybe find some resolution for this so I wouldnt have to go to such extremes.  Whats strange is, I was able to write the Microdrive with my home pc using the pfsense livecd.  I brought the Microdrive to work and was able to boot from it to the point where it tries to load the filesystem.  Even though it had just booted from the microdrive, the kernel was unable to recognize the filesystem on the Microdrive so that was weird.  I think its a combination of the CF reader that came with this box AND Freebsd thats causing it not to read correctly.  Right now its booted and working fine in my tethered setup though.  I only went through all this so I could install Freeradius and have openvpn authenticate against that, thats the only reason I bought the microdrive in the first place.

    Thanks for the ideas though!

    We do not file bug reports for FreeBSD specific issues.  This is a FreeBSD issue and you really should try the FreeBSD 6.2 install cd like was previously suggested.



  • I'm going to try FreeBSD 6.1, 6.2, 5.4 and maybe 5.0.. If it doesnt boot with any of those then i'll submit a freebsd bug report.



  • Well I just tried 5.4 and disabling DMA seems to work and forces the drive to use PIO mode.  I also tried 6.1 and it doesnt recognize the drive, regardless if I disable DMA or not.  I'm guessing support broke at 6.x…



  • I have the same issue.  I suppose anyone with a 4G Seagate microdrive will.  So what is our next step?  I don't know much about FreeBSD and its error reporting structure…



  • Visit the FreeBSD home page (http://www.freebsd.org/) and follow the link titled "Report a bug" :)



  • OK, so j0emv beat me to it.

    http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/110407

    I wish I knew enough about BSD to just fix the darned thing.  I hate waiting.  That little Seagate microdrive is perfect and I can't use it!


Log in to reply