Hardware Handling
This page is an attempt to write down expected behaviors of the desktop wrt. to common hardware. Having this specified at some level of detail will help with both QA and development. Note that we describe the expected default behavior here. In many cases, it is possible to configure the system to behave differently.
Keyboard
- Multiple keyboards should all work individually and not step on each other.
- Two different language keyboards may need specific testing
- a regular keyboard and a separate keypad may also need specific testing
- All standard keyboard keys should behave as labelled.
- This should work with all keyboard layouts
- Media keys: play/pause, stop, forward, back
- These should trigger the corresponding action in the currently open media player (rhythmbox or totem). If more than one media player is open, control goes to the one that is currently focused. If no media player has the focus, control goes to the one that most recently had the focus.
- expected X keysyms: XF86AudioPlay, XF86AudioStop, XF86AudioPrev, XF86AudioNext
- Volume Keys: Volume Up, Volume Down, Mute
- These should trigger the corresponding action in the currently open media player (rhythmbox or totem). If more than one media player is open, control goes to the one that is currently focused. If no media player has the focus, control goes to the one that most recently had the focus.
- Expected X keysyms: [Unknown]
- Power mgmt. keys: suspend, hibernate, power
- The suspend button should suspend the laptop
- The hibernate button should hibernate the laptop
- The power button should bring up a shutdown dialog. When the laptop is suspended, pressing the power button should resume it.
- These actions are controlled by GConf keys in /apps/gnome-power-manager/buttons
- expected X keysyms: XF86Sleep, XF86Suspend, XF86Hibernate
- Brightness up/down keys
- should bring up an on-screen display and control the brightness
- expected X keysyms XF86MonBrightnessUp, XF86MonBrightnessDown
- Display key (commonly Fn-F7)
- Should cycle through display configurations (only interesting with multiple displays)
- expected X keysym: XF86Display
- Lock screen key (Fn-F2)
- should lock the screen (same as the default keybinding for Control-Alt-L)
- expected X keysym: XF86ScreenSaver
- forward/back keys
- should do forward/back in web browsers
- expected X keysym: XF86Forward, XF86Back
- Scoll lock key should pause the scrollback of large amounts of text, and stop pausing when toggled off again.
- num lock key
- the num lock setting should persist across logout/login, this is controlled by the gconf key /desktop/gnome/peripherals/keyboard/remember_numlock_state, and the state is stored in /desktop/gnome/peripherals/keyboard/host-<hostname>/<display>/numlock_on
- Caps lock key
- should _not_ be consistent across logout/login; the light should continue to reflect the actual state of the key and adjust appropriately to a logout event. Caps lock should be turned off after a logout.
- caps/num/scroll key lights should reflect their actual state.
- Disable/Enable trackpoint (commonly Fn-F8)
- There is no X keysym for this, as virtually all laptops handle this in hardware. It's not yet clear whether we can get an event to track state though, which might be nice.
- regular keys
- the keyboard preference dialog should provide a matching keyboard layout
Pointing devices
- Multiple pointing devices should all work individually and not step on each other.
- Standard buttons (right, left, scroll wheel, scroll wheel clicking) should all behave as expected.
- Trackpoint (rubber-tipped pointing device typically found in the center of the keyboard)
- It should just work. Some laptops don't allow to use the trackpoint/touchpad and an external mouse at the same time, though.
- Touchpad
- Edge scrolling should be on by default on touchpads that support it
- Optionally, the touchpad can be disabled while using the keyboard. This is not turned on by default
- The touchpad can be configured in the mouse capplet
- Left-handedness
- Toggling handedness of the mouse should swap left/right buttons, but not affect touchpads
- This can be configured in the mouse capplet
- Acceleration
- TBD
Display
- Resolution
- LCDs and other fixed-format displays should default to the native resolution
- Variable-format displays (CRTs, projectors...) that define a preferred mode, should default to that preferred mode
- Variable-format displays that do not define a preferred mode should do... well, something sensible. Currently being designed.
- Can be configured in the display capplet
- Backlight
- Should get turned off after 10 minutes of idleness. This timeout can be configured in the power management preferences.
- Should get turned on after resume
- 3D
- is expected to work on some hardware:
- ATI: Rage 128; all Radeons up to and including R500 series (X + four digits); experimental support for R600
- Intel: All except i740 and Poulsbo
- NVIDIA: TODO fill me in
- Other: TODO fill me in
- DRI2 support is required for GLX and Xv to work correctly under a compositor, and is available on TODO fill me in.
- If hw-accelerated 3D is not available, the desktop effects capplet will refuse to turn desktop effects on
- If the required extensions for desktop effects are not available, the desktop effects capplet will refuse to turn desktop effects on.
- is expected to work on some hardware:
- External monitors
- When an external monitor is plugging in, it should be detected and turned on
- Currently only supported on Intel hardware
- When booting with multiple monitors, the default configuration is to place the monitors in a horizontal configuration (not cloning) if possible.
- "If possible": There is a maximum width limit on most hardware; if placing all the connected monitors horizontally adjacent would exceed this limit, fall back to cloning. TODO list the limits for common hardware.
- Display ordering should be as consistent as possible when using the same set of displays, and moving between display sets.
- The Fn-F7 key cycles between supported configurations (need details about the configurations)
- Potentially at least 'at work', 'at home', and 'on the go' configuration sets.
- Need at least to not surprise people when their screen real estate changes between locations (if you reduce screen real estate, make it possible to see everything that was previously opened, but also not overlap to an absurd extent. Increased screen real estate will probably be less of a big deal).
- Placement, rotation and resolution of monitors can be configured in the display capplet
- When an external monitor is plugging in, it should be detected and turned on
- TabletPCs and Tablet screens should default to the native resolution
- TabletPCs with rotation built-in (this may be all of them!) should handle the rotation of the display and of the tablet correctly, such that the result of rotating is that both the display and digitizer (tablet) orientations are adjusted as expected and work correctly together.
Power Management
- Closing the lid should trigger a suspend (always ?)
- It should not do anything if closed with AC power.
- Possibly, it should not do anything on close if there is an external monitor attached.
- Critically low battery should trigger a shutdown (after a warning message)
- Or a hibernate, if an option?
- Battery monitoring
- Status icon should display usefully accurate information about charge level and estimated battery life
- When becoming critically low, a warning should be displayed
- suspend/power button handling: see the keyboard section
- brightness control
- for brightness keys, see the keyboard section
- when on battery, the system should lower the brightness on its own (more detail needed)
- docking
- TBD
Networking
- wireless
- when wireless networks are available, but none has been configured to be automatically connected, you should get an information that networks are available
- When a wireless network is available that has been previously configured to be automatically connected, it should connect. It should require unlocking the passkey, if not already done this session.
- wired
- a wired connection should be brought up by default, when logging in
- really? on login? I'd think on boot, myself.
- a wired connection should be brought up by default, when logging in
- broadband modem
- TBD
Sound
- The volume level should be 'reasonable' out of the box
- Not muted. Not deafening. And it should also not change for no apparent reason.
- A 'system-ready' sound is played when reaching the login screen after boot
- A login sound is played when logging in
- Media applications like rythmbox and totem should play sound without problems
- Websites that play music or video should play sound without problems
- Multiple applications can play sound at the same time, and the sound capplet lets you control their relative volume
- Headphones
- All headphone jacks should work out of the box.
- If a headphone is plugged in, external speakers should not produce sound. Only the headphone. (this should also be possible to modify, if desired)
- Microphone
- All microphone jacks should work out of the box, with no fiddling required.
- In the case that a microphone is muted by default, if a microphone is plugged in, it should be unmuted.
- if there is an internal microphone, recording should work without fiddling
- Headsets
- Headsets, both jack-based and USB, should work out of the box for both input and output.
- If a headset is plugged in, external speakers should not produce sound. Just the headset. See above about modification (it is possible that one would want sound to come from external speakers, but input to come from a headset, for example).
Removable media
The default behavior of the system wrt removable media can be configured in the Media tab of the File management preference dialog.
- Audio CDs
- inserting an audio cd should bring up a dialog that offers (among other things) to run rhythmbox
- May also want it to offer to run software to create oggs from the CD
- Video DVDs
- inserting a video cd should bring up a dialog that offers to run totem
- Data CDs
- inserting a data cd should bring up a dialog that offers to mount the medium
- USB storage
- inserting a usb storage device should bring up a dialog that offers to mount the medium
- Empty CDs
- inserting an empty cd should bring up a dialog that offers to run a cd burning application
- Storage devices (Firewire, USB, memory cards, etc) should be mounted, and have an option elsewhere to change this behavior.
Other Peripherals
- Cameras
- connecting a camera via usb should bring up a dialog that offers to run photo management or editing applications. Different behavior can be configured in the Media tab of the File management preference dialog.
- Video cameras
- TBD
- Media Players
- connecting a media player should bring up a dialog that offers to run a music player like rhythmbox. Different behavior can be configured in the Media tab of the File management preference dialog.
- PDA
- iPhone should _not_ have the default camera behavior if there are photos available, and should just open the software that correctly handles iPhones in Linux (rhythmbox?). It should be possible to set it so that it does also open the photo manager, if desired.
- Palm should sync if the sync button has been pressed, and open the Palm software.
- others? Should there be a default PDA behavior?
- Printers
- Should detect the printer and set it up so that it's immediately useable. If there is only one connected directly (likely), set it as the default printer, as well. People are _very_ unlikely to connect a printer directly to a laptop if they don't want to be using it.
- Tablets should just work in X, and preferably just work in the GIMP and similar programs (eg inkscape). (for more possible programs relating to tablets, see http://thesopebocks.com/2009/01/15/linux-and-your-tablet-pc-making-it-usable - however, many are not installed by default)
- Eraser and stylus on tablet pen should correspond to relevant pointing device.
- By default in all applications which use a tablet, the stylus should act as the writing end, and the eraser should act as an erasing end. The buttons on the stylus should behave as a right-click, by default.
- The cursor should behave like a mouse, with relevant buttons.
- If there are buttons on the tablet, those should be detected and useable, and not be included in the tablet's view of useable space.
- USB tablets should be hotpluggable.
- More than one should be able to be attached and work at the same time.
[Note: For the cameras, media players, and PDAs, I think if it only asks the first time what you want the default to be, having it ask is fine. If it's every time, that's just painful. This does, of course, presume that the user doesn't select that as the behavior! -shillman]
Other Hardware
- External NIC (USB, PC, etc)
- Should be detected by NM, and just work
- This is perhaps not actually possible, due to the sheer number of available firmware
- For wired, it should just connect if a cable is plugged in.
- For wireless, see the https://fedoraproject.org/wiki/Desktop/Whiteboards/HardwareHandling#Networking area
- Should be detected by NM, and just work
- Bluetooth
- Keyboard & Pointing Devices should work correctly without configuration required.
- Storage - see storage devices in removable media
- Tablets should work correctly without configuration required.
- others TBD
- Fingerprint reader
- Should prompt you to swipe your finger if you enable fingerprint authentication, and allow you to use your fingerprint instead of a password in all available authentication methods that are directly at the computer (not network authentication, for example). Should walk you through the best methods to use for swiping, if you do not yet have a fingerprint stored, since apparently this takes a bit of practice to do correctly. Perhaps should have you try a few times before storing one, to make sure that you can do it consistently.