Slashdot Mirror


How About Drivers In Devices?

An anonymous reader asks: "I was setting up a new system the other day and after trying to find 30,000 different device drivers, it hit me: What's wrong with the idea of having basic drivers for common OSes in a flash ROM embedded within devices, so that when we plug the device in, the driver is then downloaded to the machine in question? You could always update it or override the process, but it would sure save us a lot of scrambling around for disks. Am I the only one who has thought of this?"

48 of 103 comments (clear)

  1. hmm, let me think by vsync64 · · Score: 4, Informative

    No.

    --
    TO BUY A NEW CAR WOULD MAKE YOU SEXUALLY ATTRACTIVE.
    1. Re:hmm, let me think by King+of+the+World · · Score: 2

      Anyone remember the WiReD Jini issue? That issue is my secret joy; a perfect lie with quotes and marketing and The Future as a dot com dream. Funny shit.

    2. Re:hmm, let me think by dimator · · Score: 5, Informative
      --
      python -c "x='python -c %sx=%s; print x%%(chr(34),repr(x),chr(34))%s'; print x%(chr(34),repr(x),chr(34))"
    3. Re:hmm, let me think by King+of+the+World · · Score: 2

      That's it! Read and enjoy people. Thanks dimator!

  2. IBM project by dawnsnow · · Score: 2, Interesting

    A friend of mine at IBM is doing a project just that. He is part of team that write Perl to download driver for IBM server.

    1. Re:IBM project by Twirlip+of+the+Mists · · Score: 2, Funny

      He is part of team that write Perl to download driver for IBM server.

      Willy Wang: What meaning of this?
      Lionel Twain: Is the. Is the. What IS THE meaning of this! Use your god-damned articles and prepositions!

      (Sorry, no offense. Your post made me think of that great line from Murder By Death, and I just cracked myself up.)

      --

      I write in my journal
  3. Nope. not the first by Monokeros · · Score: 3, Informative

    I thought of this a few years ago. Then Handspring went and did it. Which is something everyone thought was very cool when they first came out.

    All the Springboard expansion modules had drivers in the cards. Although, based on the more recent PDA offerings from Handspring, it looks like they're abandoning the technology. The Treo doesn't have a Springboard slot and the Visor Edge requires an extra caddy thing to plug the modules into (May or may not come with it. idunno).

    However, including the drivers was made possible by the fact that there was only one platform to bundle drivers for, the platform is pretty static. There aren't that many PalmOS updates and they don't change that much between versions.

    --
    The Statue of Liberty is America's lawn jockey.
    1. Re:Nope. not the first by mmaddox · · Score: 2

      Actually, saying ALL the Handspring Springboard modules shipped with embedded drivers is a bit broad. Trust me, there are quite a few that require software installed at synch time.

      --

      What'dya mean there's no BLINK tag!?

  4. Look up... by addaon · · Score: 4, Informative

    google fcode

    --

    I've had this sig for three days.
  5. Why not? I'll tell you why not.. by Xenkar · · Score: 2, Interesting
    It's cheaper to include a 10 cent CD than re-engineer every god damn product to include said ROM chip. In some cases a ROM chip would be a downgrade, since modern DVD and CD drives already have FlashROM chips for storing the drivers.

    Let's imagine that a virus somehow got on a ROM chip for a popular video card. The company would have to issue a recall. The investors would be angry from losing money over it.

    I'm suprised that virus writers haven't figured out how to update the firmware of DVD drives with infected drivers to ensure a longer life for their creations.

    In review, storing drivers in ROM chips bring extra cost from R&D and Flashable ROM chips introduce new places for evil viruses to hide. Extra costs will be passed on to us and I don't want to pay $425 for the next top of the line video card just because it includes a fancy new ROM chip when Windows VGA driver is good enough.

    "Oh no, a few minutes of 640x480! How will I ever survive?!?!?!"

    1. Re:Why not? I'll tell you why not.. by norwoodites · · Score: 3, Interesting

      Most of the recent video cards are flashable but the manufacture does not tell you this.
      This is so they can produce one card for both Mac/OpenFrameware and ia16 (correct because when an x86 boots up, the video bios needs to be 16bit) drivers and just change the driver before packaging.

      In fact the cards on the Mac in include a real driver for PPC when say ati release a new version it is only a patched version. I do not think this is the case for Mac OS X though.

  6. I think everyone's thought this, but... by abulafia · · Score: 5, Insightful

    I've certainly thought of this at least once when trying to get something working that was being a pain in the ass.

    Stop and think about what is actually going on here, though. The point of a driver is to provide glue between a standard set of apis and whatever the external device speaks. If you include the driver on the device, you just require a higher layer abstraction to manage the drivers - a driver driver, basically. What happens when there's a bug fix for the driver you install,and you upgrade/reinstall your system? Either the driver driver has to track dependencies and know when to override the card or you have to write the new drivers to EEPROM or some such. In the first case, you have to have an update list it can contact to find out if the card has the right version (your drive or WinXX died), and in the later, you drive cost up and potentially add new ways to fry hardware. And if you're doing a net enabled driver manager, why worry about what software lives on the card at all?

    At best, you can support recent kernels of popular OSes. Older ones and newer ones will still have to ignore the supplied drivers and provide different ones. You're providing a shortcut for a possibly short temporal period at the cost of a new protocol, more on-board memory and engineering for the device, and a new driver manager. A better approach would be to ape a well standardized protocol for communication (like some really old modems and some very high end scanners and image setters do).

    It isn't a great idea, cost-wise, and for non-throw-away hardware, there's no point. I have a NIC that I've had for 7 years currently happily doing service in a firewall. It is a piece of crap, but it works fine and outperforms my outgoing bandwidth. What good are Win3.1 drivers on that card going to do me, other than be potentially annoying and drive (ahem) the price up?

    -j

    --
    I forget what 8 was for.
  7. Fat chance by codeButcher · · Score: 3, Interesting

    If they don't even bother to include drivers on disks "for the most common OSes", how are you going to get them to include those drivers on flash?

    --
    Free, as in your money being freed from the confines of your account.
  8. We were just having this discussion today! by QuantumG · · Score: 5, Insightful

    I have a digital camera and so does my friend. We were both pleasantly surprised to find that XP didn't require any drivers when we just plugged it into the USB port. The reason it doesn't need any drivers is because the protocol that our cameras use to talk down the cable is standardized (the Picture Transfer Protocol). No driver is needed, or more precisely, only one driver is needed, for every camera that implements the protocol.

    Why is this possible? Because digital cameras are smart devices. They can be programmed to conform to a previously defined protocol. This is a good thing. My mouse is not a smart device. There is no microprocessor in my mouse, it is not programmable. It would be easy to come up with a protocol that all mice are expected to implement but it would not be used because that microcontroller in the mouse would cost twice as much as any of the other parts in the mouse. The solution is to make a bit of software that translates my mouse's particular hardware protocol into the defined protocol that my operation system understands. That's why we have software drivers.

    Putting a rom in something as "unsmart" as a mouse would cost too much, and the first company that came out with mice that are half the cost but require you to install a driver would capture the market. This is what actually happened, way way way back in the days of the PC wars.

    But thankfully, things are looking up. Devices are getting smarter. My optical mouse has a microcontroller in it and so does my digital camera. A whole lot of things that plug into my USB port have a microcontroller in them. Does this mean we should have software drivers in rom as you suggest? I say no! Because this would mean that we would still have all the "drivers only for windows" problems that we have today, and what about when you update your operating system, is the driver on the rom still going to work? No. The solution is to have all smart devices conform to a protocol that is standardized, like the picture transfer protocol for digital cameras.

    --
    How we know is more important than what we know.
    1. Re:We were just having this discussion today! by Webmonger · · Score: 2

      That's not a good example. Not only do all optical mice have microcontrolers, but all USB mice conform to the same protocol. You can just plug in a USB mouse, and it will work. (The same is true of PS/2 mice.)

      And here's the problem with your "standardized protocol" solution-- Although mice conform to a standardized protocol, different mice have different feature sets. Even though the standard driver will work, you generally want to install mouse-specific drivers to enable extra buttons and configure things. Thus, standard protocols don't do away with the need for device-specific drivers.

  9. Too expensive/too little benefit by mrolig · · Score: 4, Informative

    First, cost: Compare the cost per MB of CD's with flash. To fit a driver in the flash you'd have to put a huge flash on the chip. And flash is EXPENSIVE! On the order of dollars per megabyte, where as CD's are a dime a dozen.

    Second, you have to have a driver that knows how to fetch the driver from flash. So you need to establish a new interface on top of PCI to know how to get a driver, plus you have to have a universal OS ID that can be used to get the right driver, so that Win NT SP3 is unique as compared to Win NT SP4.

    Third, you have to update the driver. I don't know about you, but i'm always nervous when I have to flash a component on my system.

    Fourth, manufacturing. If you're going to build these things, the lead time on the flash image is probably longer than on a CD or a web-site. If the drivers are taking a while, you can send the board to the factory before the CD image.

    1. Re:Too expensive/too little benefit by chriso11 · · Score: 2

      Well - your analysis ignores an important point.
      How many drivers need to be 650MB in size?
      If you need only a few 100KB, then the cost for flash is significantly reduced. In addition, with CDs, you need to order a significant number. Any rev to the driver requires a whole new CD run.

      Of course, the rest of your analysis is pretty good.

      --
      No, I don't trust in god. He'll have to pay up front, like everybody else.
  10. Been done by Matthias+Wiesmann · · Score: 4, Informative
    If I remember well (somebody correct me), Macintosh Nubus cards had something like this. The card's ROM memory contained information about the card and then a low level driver. This meant that you could plug in a video card and it worked without having to resort a common denominator (say VGA). At that time, most PCs had trouble figuring out on what DMA the soundblaster was sitting on.

    Nubus was the proprietary bus interface used by Apple in the Mac II series. It was finally abandonned when Apple adopted PCI for internal extension. This approach was very good for plug and play, but very expensive.

    I think that loading drivers inside peripheral is very reasonable: first it would be expensive and second how many drivers would there be? If you build a PCI card, this would mean you would need drivers for different plateforms (xx86, PowerPC ,Sparc and probably others) and different OSes. This means a lot of combinations. More reasonable ideas IMHO are:

    • Have busses where you can query the device for its type and id and also the assumed bus speed. And have devices tell their type. Serial ports are nightmarish in this respect. The trick to figure out the speed is a hack (this is the reason for the AT sequence, the modem could recognised the AT pattern at any rate and thus guess the rate). Also the system cannot figure out what is connected to a serial port in a reliable fashion.
    • Generic drivers. Many new USB components (small disks, mices, keyboards) do not need any drivers because they export a standardized interface.
    • Flexible drivers. This is an intersting feature of the driver system of Darwin / OS X, IO/kit. Drivers are object oriented. A PCI SCSI card drivers is basically two objects: one that inherits from a PCI class, and another that inherits from a SCSI controler class. This does not remove the need for drivers but should help make them simpler: a driver would only contain code that handles stuff that is specific to the component.
  11. Machine Code? by Vinum · · Score: 2, Interesting

    Doesn't the device require machine code to run? I mean, seriously. How is the downloadable device driver (lets say the device is USB) going to work on different processors and different operating systems? This just won't work. The thing that _has_ to be done is for standards to be used. You know... standards.. things you could find in the pre-monopoly era.

    It would be easy for devices to have in its ROM the windows device driver. But what good is that really? Just pick a standard for a certain device to communicate and leave it at that... If you do something different, publish it on the web somewhere so different OS vendors can read your document and build a device driver around it. Hell, freaking distribute sample C code or something of an implementation of the device driver so people can port it easier.

    Some graphics card vendors obfusicate their driver to hide the implementation of their device, which I do not compleatly understand I guess. If they really wanted they could pick a type of bytecode and publish that. It isn't difficult to get some java byte code and translate it to whatever the native processor is. I'm not talking about a full fledged java implementation to do this, just translating the op codes since as far as byte codes go. Java has the best published ones for a virtual machine out there. They could reinvent the wheel if they pleased, I don't care.

    But either way, ya... some of this stuff sucks. Just refuse to buy things that don't have decent standards, as a previous poster was speaking of. I would of never bought my Sony Clie had I realized the USB/memory stick storage was not a published standard. As far as the Clie is concerened neither linux or freebsd have working drivers to mount the memory sticks on them. (Sony laptops that have the memory stick reader in them can usually be mounted in freebsd/linux as SCSI devices). I love or hate Sony depending on what side of the bed I wake up on. (The side with my TV and PS2 is the good side):)

  12. Don't forget... by 3-State+Bit · · Score: 3, Interesting


    Device drivers take up memory to load. So, include enough RAM for the driver on the device itself, so that each device adds its weight to the bus.
    </ironic>
    You're advocating something very similar....think about it.

  13. Only Person? Not likely! by nathanh · · Score: 5, Informative
    Am I the only one who has thought of this?

    You're only like the hojillionth person who has thought of this. It even got implemented on a fairly large scale by Sun. The SBUS cards from Sun used a general purpose driver written in "FCode" until the OS booted and the real driver could be loaded. One benefit of FCode is that the card can be used before the OS boots (useful for Ethernet and SCSI cards). The other great benefit is that FCode is CPU and architecture independent: it's an interpreted language!

    http://sunsolve.sun.com/data/802/802-3239/html/sbu sandfc.html

    I'll bet money that Sun wasn't the first company to implement the idea, and almost certainly not the first people to think of this idea. You're probably 30 years too late for that.

    1. Re:Only Person? Not likely! by Polo · · Score: 4, Informative

      Actually, what's funny is that this works on Everyhing BUT PC's. It works on Suns and on Macs.

      On sun it's called openboot and it's called open firmware on the mac.

      You can access it with STOP-A on a Sun, and for a Mac it's Command-Option-O-F on boot.

      Here's info from sun and A Sun Example

      Here's Open Firmware info from apple and Mac Example.

  14. Alternative: numbers & registries by Twylite · · Score: 4, Interesting

    As many people have pointed out, this is sadly not possible for reasons of cost and maintainability. On the other hand drivers will always be around until all devices get smart and use only standard APIs. As a developer I can tell you that that is going to happen in the near future. In terms of the age of the universe, "not by the year 3000" is the near future.

    An alternative solution would be a more controlled process for device identification. PCI goes a long way to do this, and most new devices have some sort of identification. Basically every model of every device from every manufacturer needs a unique ModelID which is easily retrievable according to the basic protocols of the bus in question.

    The ModelID could easily be a 128 bit number (64 bits assigned to the manufacturer, 64 assigned by the manufacturer; they control that range).

    Then we need some sort of industry level agreement (or non-profit organisation with lots of clout) to maintain a database of ModelID = Device name + driver (or at least where to find the driver).

    We can dream ...

    --
    i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
  15. Simpler solution... by stu_coates · · Score: 2

    ...would be to store just a URL on the device where drivers can be downloaded from. This way the host OS could go out and pull the drivers automatically. There would need to be some sort of naming convention to differentiate between drivers for the various versions of Windows, Mac OS, Linux, etc.... but this would avoid having to store all flavours of drivers on the device itself.

    Of course if the device IS your method of connecting to the net then this may prove to be quite hard! ;-)

  16. This already exists - I2O by earthman · · Score: 4, Informative

    Just search google for i2o split driver model. I'm not sure what ever happened to it, but the idea was to split the driver into two parts. One was a device specific OS independent driver which resided on the device (which had a processor on it), and the other part was an OS specific driver for a particular class of device, which would then work with all devices of this class. (One driver for all disk controllers, etc)

    Besides, doesn't USB do something similar too? Quite a lot of devices work just fine with the standard driver for their device class. Think input devices, storage, etc.

    1. Re:This already exists - I2O by Sentry21 · · Score: 2

      USB input is a standard, which input devices have to conform to. A device's USB firmware will report the manufacturer name, name of the product, and the type of device. Human Input Devices, or HID, use standard drivers to accomplish this, in the interests of usability. This is why you can take an Apple keyboard and plug it into a Windows PC and have it work, if Windows doesn't crash (it wanted me to reboot to install the mouse, then again for the keyboard). This is also why OS X will recognize any three button or wheel mouse you connect (assuming the mouse is properly designed). USB Storage works the same way - standard interface, standard drivers. You can use different drivers to access extended functionality, but you don't have to - example is the MS Intellimouse with the 87.2 buttons. With the Intellimouse drivers, they all work. Without, it's a standard wheel mouse.

      FireWire is similar, in that it's very no-driver. Storage devices, cameras, and so on (ideally) Just Work, using standard interfaces and suchforth. Never used one though, so I can't tell you what the practical implementation is like.

      --Dan

  17. Open Firmware by Anonymous Coward · · Score: 2, Informative

    Open Firmware has already solved this. The device driver is written in Forth. A Forth interpreter in ROM compiles it for the local machine.

  18. JNDI by DeadSea · · Score: 3, Interesting
    I believe that this was part of the Java Naming and Directory Interface.

    If I recall correctly, this protocol would handle both discovery and drivers. The basic idea is that each type of device would have some industry agreed upon interface. For example a printer would support and interface with a "public static Status print(Document d) throws IOException" interface. There is a way to ask for devices near you that support such an interface. The devices that do, would respond with an Object (or driver) that implements that interface and you would be good to go.

    Microsoft didn't support it so hardware vendors don't support it, so it is fairly dead at this point. However, it would have been kewl.

    1. Re:JNDI by siegesama · · Score: 2

      I think you mean Jini. (not an acronym, apparently).Everything you described applies to Jini, but not to JNDI. JNDI is used to make resolvable URIs, essentially (eg: ldap URIs, JDBC:postgres URIs, java:comp URIs, etc). You'll see it used in servlet containers, and I believe in anything with distributed components (to look up those components by name and access them). The big sell on Jini was like you described: it used JavaSpaces services to declare devices on the network, and give them a common interface. Essentially, it was another level on RMI. I think JavaSpaces led to JNDI eventually...

      --
      what the hell is a 'junk character', anyway?
    2. Re:JNDI by DeadSea · · Score: 2

      Yes, you are correct. I couldn't come up with the name for it and JNDI sounded right when I found it.

  19. Sounds like Microcode by Chanc_Gorkon · · Score: 2

    This will happen eventually. As PC's keep going on, I see more and more things implemented on PC's that mainframes have done for a LONG time. Take VM ware. Mainfrmes has had Virtual Machines for a long time. PC's are just now getting powerful enough to do this.

    On a mainframe, every device has intelligence(usually). They all have a channel processor and everything. The channel processor is the one who reads and processes the microcode. All of the processing needed for that device to works usually occurs on that device. All the mainframe wants to do is pump data out through it. Basically, it's already happening if at a lower level. Take Graphics cards. The GPU handles alot of the rendering independant of the processor. It just happens to share a bus with the main CPU. This may not be having drivers built into the device, but there is talk of bringing channel like functions to PC's especially for I/O intensive devices like Hard Disks, Graphics Cards and Network Cards. When this happens, all the kernel would have to know is how to talk to a chanel type device. At that point, it would just pump data. What kind it is would in not matter much to the main CPU. At least that's the way I understand it.

    --

    Gorkman

  20. To take FCode a step farther... by Muad'Dave · · Score: 2

    I'd like to see printers and the like use Java-based drivers that implement a standard interface. You could either load the java into your print spooler from the printer, or have the printer provide an RMI-accessible object that your spooler can talk to. Woohoo! Finally, OS and printer independence!!!

    --
    Tiller's Rule: Never use a word in written form that you've only heard and never read. You will end up looking foolish.
  21. Re:64 bits.... by Twylite · · Score: 3, Insightful

    First, please realise that I did note in my original post that PCI already has ID numbers of this sort; but that all new devices on new busses need it AND it needs to be more controlled / standardised. i.e. A PCI card manufacturer can use the same ID for all revisions of their card if they want, even when some use different drivers. Its stupid, but they do it.

    Second, no, 64 bits isn't overkill. There've been problems in MAC addressing for some time becuase 48 bits was supposed to be enough. Now you're throwing in a whole lot of new manufacturers, a whole lot of new devices, and hopefully mandating better control over the numbering by saying that every revision (hardware/firmware combo) must have a unique number.

    While large swarthes of the ID space may be unused, don't underestimate the importance of having enough to LET it be unused. Let's not go into the shortsightedness of having 32 bits for IP addressing, 2 digits for a year, etc.

    64 bits would probably be fine if you exclude a serial number; but even then 128 bits would be compatible with current software standards (GUID/UUID), which would be convenient.

    --
    i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
  22. Go away fool. by Andy+Dodd · · Score: 2

    VESA = Stone Age.

    On a related note, I haven't seen a card in years that didn't have VESA compatibility. But VESA only provides an interface for the most basic featureset of a card. If you're using VESA compatibility mode instead of getting a proper driver, you're throwing away everything that sets a $250 GeForce4 Ti from a $20 S3 or Trident POS video card.

    Same goes for SB16 compatibility - Lots of cards have this. Would I want to use it? No way, not with all of the benefits that newer cards offer.

    Keyboards w/o "internet keys" - Hmm? I've never had any problems with such keyboards. Don't touch the "internet keys" and the rest of the keyboard is 100% identical to a normal PS/2 keyboard. In the case of "Internet Keys", usually they're just extra scancodes which the driver has no problem understanding and it's a simple matter of mapping the keys to a useful function in X or wherever.

    --
    retrorocket.o not found, launch anyway?
  23. Lack of Standards by mnmn · · Score: 2, Insightful

    Drivers in microcode or ,machinecode would be quite small, especially if gzipped. Make the microcode a standard instead of just assembly machine code, and it will work easily for any windows linux solaris macosx computer.

    Toughest part is making a standard. Once a standard companies will theoretically flock to do this..

    Secondly I think it should allow for just putting in a URL that the OS could use to download the driver. This will be used by cheaper parts like special headphones or mice.

    Thirdly for older products.. there should be ONE standard online database of the product numbers and serial numbers where companies would submit their drivers, and OSes would download them as needed. Strong crypto will be needed for this.

    Overall this shows the severe lack of standards dominant in this industry.

    --
    "Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky
  24. Re:NuBus not Apple-proprietary by RevAaron · · Score: 2

    And NeXT used a modified NuBus for its NeXTbus expansion for the NeXT cube.

    --

    Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
  25. Big Printers already do this by Telastyn · · Score: 2

    Most big networked printers (HP) have their drivers on a tiny web/SMB server on the printer. If you use windows, you can just browse to the printer and it will pick out the proper driver for you.

  26. The Apple II had this by shoppa · · Score: 2
    Every Apple II peripheral card had a built-in ROM with device driver. For the disk drive, it was a boot ROM. For the printer card, it was a printer driver, etc. It was seriously cool to plug in a new peripheral and have it working within seconds.

    That said, the trend these days is towards less and less intelligence in the peripheral and more and more dependence on the OS and main CPU. The Winmodem is an extreme example. So while you've got a good idea, it's so 1970's and not nearly trendy enough for today's manufacturers :-).

  27. Re:Acorn RISC OS "Podules" by Mr+Z · · Score: 3, Informative

    Apple ]['s also stored the device firmware on the card for their add-in cards. You had 2K-bytes of ROM allocated to each card at $Cx00, where 'x' was the slot number. For cards that needed more storage, you could use the 8K of space from $C800 - $CFFF, but I forget the exact rules for sharing that space.

    PR #3 anyone? (Enables 80-column mode on a machine with one installed.) How about PR #1 (to print) or PR #6 (to reboot)?

    --Joe
  28. No, you're not the first by Ayende+Rahien · · Score: 2

    But yes, it would be nice if you could do it.
    The driver wouldn't be for common OS, but rather would confrom to UDI.
    Universal Driver Interface.
    On startup the OS would extract the driver from ROM, check that it has no updated version installed, and load the driver from ROM/HD (if there is updated version).

    --

    --
    Two witches watched two watches.
    Which witch watched which watch?
  29. Re:NuBus not Apple-proprietary by norwoodites · · Score: 2

    And the NeXTbus was twice the speed as the NuBus. 20MHz instead of 10MHz.

  30. In a sentence... by Heretik · · Score: 2, Insightful

    Standards, not drivers.

    Take digital cameras as an example. Yah, it's sure be neato to have to driver on the camera to avoid having to find it! Or, like mine (and alot of cameras nowadays) the camera can just adhere to a standard (ie USB Mass Storage Device) and Just Work(TM). Which is better?

    Sure, this doesn't work for some things, but it applies to most external-type things that putting a flash driver into makes sense anyway.

  31. Re:How about devices that implement standards. by BitterOak · · Score: 2
    Just chose better devices and you're half way there

    Problem is cost for many people. Serial port modems generally cost at least twice as much as winmodems, SCSI drives nearly twice as much as IDE, Postscript printers can easily be more than twice as much as equivalent winprinters, and even PCL printers tend to run 1.5x the cost of a winprinter.

    For an office situation, where budgets tend to be larger, and compatibility is more of an issue, your advice makes sense, but for most home users, it's just to expensive to do it the way you suggest.

    --
    If I can be modded down for being a troll, can I be modded up for being an orc, or a balrog?
  32. PostScript is expensive by yerricde · · Score: 2

    why not just make standard interfaces for all or most all devices? Like postscript for printers?

    Because PostScript printers cost twice as much, part for the added hardware for running the PS interpreter, and part for the interpreter software license (if you choose Adobe's over Aladdin's).

    I'd go for a simpler interface where the host sends the printer a PNG of the page, and the printer prints it. The host should also be able to query the printer's paper sizes, hardware pixel densities, color model (black, cmyk, or hexachrome), and dot spread. Then Any Old Rasterizer(tm) would work.

    --
    Will I retire or break 10K?
  33. AmigaDOS did this by drinkypoo · · Score: 2
    I know this is just another in a long line of "n did this" posts, but. AmigaDOS did this and it was one of the reasons autoconfiguration worked so well. (another was the excellent design of the zorro bus.) This was helped along by the fact that on the Amiga nearly everything was in userland, including drivers of all kinds. This worked for all kinds of hardware... scsi controllers, video cards, NICs, etc. Some hardware did require drivers, for whatever reason. One of them was the Amiga 2000HD which had a SCSI/MFM controller in it. You had to boot from floppy (or something... if you had enough ram the recoverable ramdrive was the key.)

    It is worth noting that the operating system for the Amiga was mostly in ROM as well, but the shell and all the commands were on hard disk or floppy or whatever. If you had enough ram you could mirror ROM into ram and boot from it, or load a disk file and boot that or whatever. Otherwise, the OS ran (more slowly) out of ROM but didn't take up space. Ah, the joys of a big address space.

    As has been noted elsewhere, OpenFirmware machines (including every sparc-based sun) have a forth interpreter and you write some hacked up forth for drivers which the OS uses. Of course, it's ungodly slow, so it doesn't replace actual drivers in the OS, it just lets you get started. You get enough intelligence to, say, netboot, or load a kernel, and you get to use your primary graphics display. This is the reason why a Sun's console is slower than X, even on the 68k suns and the earliest sparcs, with their crappy CG3 framebuffers.

    --
    "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  34. You are definetly not the first! by jonr · · Score: 2

    But you are approaching the problem from the wrong angle. It has been mentioned by some people here, but the Rigth Thing (TM) would be using communicating standards. We have some already, the USB has few, Mass Storage Device comes to mind. My digital camera just acts as another disk drive, no special drivers needed.
    We have semi-standard VESA mode for graphics cards. If we only could get good 2D & 3D minimal standards.
    But what I am trying to say: If we could agree on some minimal standards to talk to all kinds of things, but to make to most of them, you would need specalized driver. Graphics, Video, Sound, Storage, Input, all these would benefit from these "minimal standard drivers". Just plug in a sound card, and you get sound. Maybe not highes quality or Dolby Stereo, but usable for your games.
    Well you get my drift.

  35. NCR's SCSI CAM implementation by harlows_monkeys · · Score: 2
    That was sort of how NCR's SCSI CAM implementation worked. The BIOS on the SCSI card contained two drivers for the card (two because it had to work with DOS, Win 3.x, Win95, WinNT, SCO Unix, OS/2, and Netware, so we had a 16-bit driver and a 32-bit driver).

    Designing the interface to the driver in the BIOS was a bit of a challenge, because it had to work with everything from the 5380 (a very low level SCSI chip--basically all it implemented was those parts of SCSI that were too fast to do in software efficiently, like REQ/ACK handshakes during data transfer) all the way to the 537xx, which was basically a SCSI coprocessor, capable of doing everything, including management of a queue of requests.

    To use the BIOS driver, you had to load it into memory, and relocate it (a relocation table was included in the BIOS), and give it a table of callback functions that it could use to do things like enable/disable interrupts, allocate and free memory, map virtual to physical addresses, and stuff like that. So, for each supported OS, we had to write a driver that could do that. This part tended to be fairly simple.

    This worked very well. You could take a Unix system with a 5380, and decide you needed better performance. Shutdown. Replace 5380 card with 53720 card. Reboot. You now have better SCSI performance.

    A way I found helpful to think about this while desiging it was to think about this question: "If you could design the ultimate intelligent SCSI card, what would you want it to do? How would you interface between it and the OS?". We basically then designed for that interface, and that's what the driver in the BIOS implemented. The NCR cards were essentially intelligent SCSI cards that just happened to not have a CPU onboard...so they had to make use of the system CPU.

  36. Instead of drivers by nurb432 · · Score: 2

    What is needed is a consistant interface for all devices so that drivers are not needed.

    You just notify what "class" of device, and the OS magically knows what to do.

    --
    ---- Booth was a patriot ----