You mean that Canon Canoscan 8400 scanner I have that has no support in Linux? The one that worked in Windows XP? Linux doesn't support everything. Even major hardware vendors like Canon have products that have no support in either Windows or Linux.
There are lots of great uses for Linux. But you cannot put it ahead of Windows for most people and most applications. Hardware companies produce Windows (and maybe Mac) drivers, whereas many times they won't produce Linux drivers (or will drag their feet before getting them out), leaving the user community to sort out how to get something working. I've had a scanner, a wi-fi dongle, a printer, and more that just don't work on Linux because no user has written a compatible Linux driver for it, yet. And the manufacturer never made a driver for Linux. I've never really had that issue with Windows. Aside from finding some legacy drivers for older versions of the OS, or getting an old bit of hardware running on newer versions of Windows, I've had no issues finding a driver for my hardware.
Until Linux catches up with graphics capabilities and hardware drivers, it cannot appeal to the majority of users out there. They just don't want to dig into command lines, config files, and compilers to get things running. Ubuntu has done a great job of getting things up and running for everyday tasks, like email, web browsing, watching streaming video, and creating office documents. But, that's not enough to win most people over. Popular software is written for Windows. Hardware drivers are written for Windows. Why change when it does what you want/need?
Yes, Linux is good for control, openness, and customization. If you want to write custom software for your research project, Linux is a great option. You can tap into and alter the OS to your needs. Slim it down to fit on a small SD card. Run it on some homebrew hardware project. But, it still doesn't have that mass appeal. It's just too... techy... for most people.