Logitech has been doing really well recently in supporting Linux. When looking through Logitech's devices for sale, many customers will see that some devices are compatible with Linux. It is amazing to see Tux (the Linux penguin) on the back of the package in the list of other supported devices. Not very many companies take the time or effort to support Linux fans. After hearing more and more people recommend Logitech devices to Linux users, I decided it would be a good idea to investigate this for myself. NOTE: The quality of my camera is not that great, so please excuse the poor image quality. Logitech's company and staff were kind enough to send me a mouse for review. I have the M325 wireless mouse (http://www.logitech.com/en-us/product/wireless-mouse-m325?crid=7). The website and packaging show the mouse to be compatible with Windows XP and later, OS X 10.5 and later, and Linux kernel 2.6+. I am amazed to see this after being accustomed to companies only listing Windows and Mac systems. The mouse comes with a USB dongle which allows the mouse to communicate with the computer without needing a wire. Also included in the package are some easy directions for use, info on the 3-year limited hardware warranty, a fully-charged battery for the mouse, operating conditions info, safety info, and other information. This may sound odd, but I amazed with the easy-to-open package. The back of the packaging peels back allowing the owner quick and easy access to their new product. I did not need to use any kind of tool to open the package. The USB dongle uses the usual 2.4GHz that many wireless devices use. My Linux system (Ubuntu) recognized the dongle and mouse immediately. The cursor moved easily and steadily. I did not experience any jerky movements, shakiness, or lag. The mouse responds very well with video-games, so I would personally recommend this mouse for gaming. The left and right buttons also work well. However, this mouse has more than two buttons. This mouse has a total of five buttons plus a scroll-wheel. The other three buttons are built into the scroll-wheel. Pressing the wheel down acts as one button and tilting the wheel to the left and right accounts for the other two buttons. All five of the buttons work on my Linux system without any configuration or special action. The scroll wheel can also scroll up and down allowing users to scroll through pages and lists. The wheel moves with ease and is very precise. The scrolling is smooth and consistent. After dabbling with the buttons, I realized that the tilt buttons can be used to make the Firefox web-browser go back a page or forward. I find this feature to be more convenient than clicking the arrows by the URL bar. I also realized that the same feature works with file managers (like Nautilus). Tilting can take me back to a previous directory. Also, gamers may be able to set their game to use the tilt buttons, thus allowing the gamer to perform more actions with a mouse. The packaging says the mouse uses a smart sleep mode to conserve battery-power. The packaging also stated that the average expected battery-life for the M325 mouse is about eighteen months. This mouse uses one AA-battery which is an inexpensive and common battery format. When the mouse is turned on or awoken from sleep, an LED lights up to inform the user the mouse is turning on. Otherwise, the user may wonder if the mouse broke if the user notices a slight delay. The mouse uses a low-power infrared laser to detect its movement. I tested the mouse on various surfaces - wood, smooth concrete, plastic, fabric, colorful surfaces, single-colored surfaces, and various others. The results were great. This mouse works well on many surface. So, whether you are using a computer at a wooden desk, a marble counter, or at a table with a tablecloth, the mouse should work. Many people like to use mouse-pads to make their mice respond better, but in my personal opinion, this mouse works perfectly fine without a mouse-pad. The mouse moves smoothly across flat surfaces (like a desk or table). I do not notice any friction or resistance when moving the mouse around. Under the mouse, there are four black plastic pads that do very well at reducing friction. Not only is the movement smooth, but the mouse itself is comfortable to hold. The mouse is designed for comfort. Also under the mouse is a cover that can be slid off revealing the battery and a storage compartment for the dongle. This is a great feature that allows users to take their favorite mouse with them as needed. This also prevents people from loosing the dongle because then the mouse is useless unless the user has another dongle. This interesting feature has an important application in the IT department. Assume a client reports an issue with their mouse. The technician can then conveniently bring their Logitech mouse to help diagnose the issue (like see if the client's mouse is the issue or test USB ports with a mouse that is known to work). The portability of this mouse can benefit digital artists that use Blender on their laptop. Any Blender guru would know that some of Blender's tools are easier to use with a mouse with a scroll wheel and more than two mouse buttons. The dongle offers a special feature that Logitech calls “Unifying” (http://www.logitech.com/en-us/promotions/6072?wt.ac=ps|6248|Unifying). This allows me to wirelessly connect other Logitech devices to the dongle. For this to work, both the dongle and the wireless device must support Unifying. So, if a user gets more than one wireless Logitech device, the user will only use one USB port instead of all of them being occupied by dongles. NOTE: If you just want to know the simple facts about the mouse (like you read above), then you may wish to skip to the last two paragraphs of this review because the rest is a deep observation of the mouse from the software and driver perspective. Okay, I have discussed a lot about the hardware and performance of this mouse, but how does the operating system view this mouse. In a terminal, I ran the "lsusb" command and this is the output for the Logitech dongle - "Bus 002 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver". I then executed "ls /dev/input/" and saw two mouse devices. "mouse0" is my touchpad and "mouse1" is the wireless mouse. Even though the mouse is not physically connected to the computer, the kernel still knows this is a mouse. Next, I typed "cat /proc/bus/input/devices | less" and below is the portion of the output that pertains to the Logitech mouse. Unless you are very computer savy, this will have no meaning to you. Do not worry about understanding it. Code: I: Bus=0003 Vendor=046d Product=c52b Version=0111 N: Name="Logitech Unifying Device. Wireless PID:400a" P: Phys=usb-0000:00:14.0-2:1 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.2/0003:046D:C52B.0003/input/input14 U: Uniq= H: Handlers=mouse1 event13 B: PROP=0 B: EV=17 B: KEY=ffff0000 0 0 0 0 B: REL=143 B: MSC=10 Running this command "lsusb -d 046d:c52b -t" reveals a lot of info (I got the hex number from our previous output). The important one I am looking for is the name of the driver that supports the dongle. I see that it is "usbhid". Now, I can type "modinfo usbhid" and learn about the driver. The usbhid driver is a generic driver that offers support for a variety of USB devices like keyboards, mice, game-pads, etc. As long as a USB device follows certain standards, the device will be supported by Linux. So that is how Logitech did it! Okay, now to explore the SysFS directory for this mouse. I searched the SysFS information concerning the mouse. On every system, the location is different, but for me, it is (at this time) /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.2/0003:046D:C52B.0003/input/input14/. How did I find this you may ask? Remember the mouse's entry in the output of "cat /proc/bus/input/devices | less"? The "Sysfs" field contains the path to SysFS's entry for the mouse. The SysFS directory for this mouse contains information like various states of the device, vendor ID, product number, etc. One file of interest is the one that shows the LED's current status. Running the commands below (the location will differ system to system) will return "0" for off or "1" for on. Code: cd /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.2/0003:046D:C52B.0003/input/input14/capabilities/ cat ./led Unfortunately, the file is read-only, even as Root user, so I cannot force this file to be "1". Also, in the same directory, the ./abs file stores the absolute motion and ./rel stores the relative motion. ./key displays the key presses. For those of you wanting to thoroughly understand what all this SysFS info means, I recommend this link for further reading - http://manpages.ubuntu.com/manpages/trusty/man4/evdev.4.html Linux systems should recognize all of the buttons on Logitech mice. If for some weird reason your system will not recognize some buttons, then these three links should help you. They explain how to set the buttons. Also, the links can help you figure out how to customize extra buttons to perform interesting tasks other than the intended purpose of the button. For example, advanced users could change the mouse button settings to make the left-tilt-button open Firefox or some other program. https://help.ubuntu.com/community/MouseCustomizations http://askubuntu.com/questions/213749/how-to-set-mouse-wheel-tilt-click-support-up https://wiki.archlinux.org/index.php/All_Mouse_Buttons_Working After evaluating Logitech's M325 wireless mouse, I feel that Logitech is doing a great job supporting Linux. Logitech does indeed make great hardware. I am pleased with the quality of the product and the ease of communication with Logitech. I also want to personally thank Kim Warne from Logitech's PR agency (Finn Partners) for this opportunity.