Slashdot Mirror


Know Any Hardware Needing Better Linux Support?

Dev Null writes "The Linux device driver project has hit something of a snag: they have lots of developers, but few devices to work on, so they're looking for input concerning which devices aren't well-supported in Linux. If any of you know of devices that could use better support, you can help out by listing them on the project's wiki."

9 of 518 comments (clear)

  1. Re:First by tepples · · Score: 5, Informative

    why are they excluding printers? The fact that Linux printing is done is userspace is not an excuse. Because these are Linux developers, not CUPS developers or SANE developers. Let the people who specialize in userspace handle userspace.
  2. User space defined by tepples · · Score: 4, Informative

    they can't be bothered to work on the MAJOR printer driver issue (*cough--Lexmark--cough*) because printing takes place "in userspace"? What the hell does that even mean?

    Linux is a kernel. Almost every other program running on a Linux-based system, be it GNU/Linux or uClinux, is an application running in user space, a part of memory separate from "kernel space". The drivers for printers are "filters" for an application called CUPS, the drivers for scanners are modules for an application called SANE, and the drivers for video cards are modules for an application called X.Org X11.

    The people who made this request for proposals are interested in projects that need specific support from kernel space. The kernel side of scanning and printing is solved through libusb.

    1. Re:User space defined by cheater512 · · Score: 5, Informative

      Buy a HP printer then. Full printing, scanning, faxing and network support which HP makes GPLed.
      http://hplip.sourceforge.net/

      What more could you ask for?

    2. Re:User space defined by thue · · Score: 3, Informative

      IMO a wiki in the style of Wikipedia would work well for this, with everybody contributing they knowledge.

      *shameless plug* I happen to have created such a wiki, though it isn't yet as active as I would like: http://www.hardware-wiki.com/

  3. Re:Only the best! by marcansoft · · Score: 5, Informative

    Devices that use userspace USB drivers:
    - Printers (CUPS)
    - Scanners (SANE)
    - Cameras (gPhoto2)
    Devices that use kernelspace USB drivers:
    - USB Mass storage (card readers/pendrives/media players/etc)
    - USB Networking
    - USB Bluetooth
    - USB to serial/parallel converters
    - USB HID Input
    - USB Audio
    - USB Video Capture

    That USB devices are a userspace issue is a lie. They go both ways.

    Besides, Trance Vibrator support is already in... the kernel.

  4. LDP by xeoron · · Score: 3, Informative

    Such a thing already exists, it's called The Linux Documentation Project.

  5. Re:First by fritsd · · Score: 3, Informative
    Probably other people can describe it much better, but here goes:

    From an end user's perspective, "userspace" is what you see, the programs you start up and interact with. "kernelspace" is something you only encounter when the system crashes or a floppy drive is stuck or a line printer on fire etc.

    From a technological point of view, Unix-like operating systems have a clear separation between "kernelspace" and "userspace". The kernel is a program that always runs and "does everything". It is supposed to only do the low-level tasks, close to hardware, such as scheduling (which userspace program is allowed to run next) and I/O (send bits to a parallel port printer and wait x microseconds).

    Between kernel and userspace is a software library called the system library; for Unix-like OSes usually written in C, libc. This contains functions like write() and read() that are implemented by sending commands to the kernel to do something via "system calls". Whether those commands are actually executed then depends on the permissions model, because programs using the system library are all run as if executed by a "user".

    This brings us to userspace: an end-user wanting to print something in the gimp program presses a button, the gimp program is running under the privileges of that end user, the userspace programmers who wrote gimp tied the "print button press" action to a gimp function which at one point does a libc call write(printer, data), the C library function write() takes the data and <start handwaving> invokes the kernel's SYS_write() call (I think) with permissions from that end user and a pointer to the data in user memory and a pointer to the printer device special file (everything looks like a file in Unix) and then the gimp program will just sleep and halt and be activated again when the kernel decides to give it another slice of CPU time (for example, after the kernel has done the actual printing, or at least called the kernel functions to get the actual what-have-you brand printer driver functions to do their voodoo with the user-presented data).</end vague handwaving>

    But as you can probably tell I'm not a real system programmer so I'll gladly let someone else correct me from here :-)

    --
    To be, or not to be: isn't that quite logical, Slashdot Beta?
  6. Re:First by Bootsy+Collins · · Score: 4, Informative
    This makes no sense, since ultimately *all* device access is in the kernel. It's OS design 101.


    No, it makes perfect sense -- it's just confusing because of an odd use of terminology (at least as compared to Windows).

    When people complain about printer drivers under Linux, they're not talking about kernel modules -- what most of us would think of as "drivers" in the traditional sense. Linux already has USB/parallel port/whatever kernel modules that handle everything related to the communication with the device. The complaint is in the "device-specific-properties" end; since the USB/parallel port/whatever kernel modules are generic, handling only the lowest layers of how communications on the bus takes place, they don't know anything about the type of data the device expects.

    To make a useful-but-not-quite-right analogy, your network interface card knows about how to send 1s and 0s over the net; but it doesn't know anything about what kind of sequences of 1s and 0s will make sense to anything on the other end. Instead, you've got software layers above it that are responsible for taking a bunch of outgoing data and cutting it up into an ordered sequence of chunks wrapped in headers to allow re-assembly (the TCP part), then wrapping them in shipping headers so they'll reach their destination (the IP part), before sending them to the NIC. But even those software layers don't know that the device on the other end will be passing this data to a web browser; so the chunk of data being sent better look like sensible HTML. That's taken care of by other layers of software in user space.

    In Linux, kernel modules handle the communication with the device; but they don't know (and don't care) what form the device is expecting the data to be in. For printers, that's handled by a separate "filter" layer that comes before the kernel modules do their work. The filter layer is typically some sort of translation program that runs in userspace, takes a stream of data as input (from a file, from another program, or whatever), and encodes it into some other form and/or breaks it into chunks and/or wraps it in headers. The "encoding into some other form" would include putting in the stuff that exploits specific printer features. It's these filters which are sometimes missing or feature-incomplete in Linux, and are what people refer to when they talk about printer drivers.

  7. Re:iPods? by /dev/trash · · Score: 3, Informative

    gtkPod works great. Check it out.