Monday Aug 31, 2009

Epson NX - A cheap refurbed printer

I went out shopping at Fry's last Friday and just on a whim, saw they had a diminishing stack of refurbished Epson NX400 inkjet Multi-Function copier, scanner, printers. Price was right. Just $45. So I bought one. Heck, the stack of 4 black, cyan,magenta, yellow cartridges alone was worth about that much. So it was definitely a good deal. Like buying the cartridges and getting a free printer!

I waited until Saturday evening to unpack and install. I used to dread hooking up printers because it'd be a lot of trial and error to get it working. But if folks have noticed since SNV build 90 or so, the printing has been greatly simplified by the support of CUPS option. Solaris LP is still standard on the system, but it's very easy to change. Simply, use the print-service -s cups command to switch over from regular LP to CUPS (see the man page for more info).

The reason why I bought it was due to clogged heads on my older Epsons, and try as I might with the Windex spray into the heads and soak over night (folks may want to do some web search on ammonia-based cleaning and declogging procedures), the black printing head was clogged beyond repair. I did get the colour printing going, but after many dark stains on my fingers, I gave up.

And the reason for my clogged inkjet heads was due to lack of use. Ever since my wife discovered 14 cents/picture Costco Photo Center then found out she can pick up in at most an hour (sometimes in 30 minutes!), she'd rather just print it there. So I don't need to print colour copies often at home, and if colour inkjet printers don't get used often, ink can dry on the heads and clog them up. Some printers are designed so the cartridges contain a fresh head, like the HP inkjet printers. However, this tends to add cost to each cartridge, but has the advantage that each cartridge comes with a new print-head. Needless to say, I placed my bets on lower cost cartridges.

Still, I have to print with a colour printer every Fall, and that's because my kids go back to school. Our school has an annual request for emergency rations and updated emergency contact information, which includes a couple of colour photos of each child that can be used in case of an emergency for identification by law enforcement or school staff.

So what was great about the NX400 was that it has USB and PictBridge. It allows me to directly print from the camera. It also has a small 2 inch or so colour LCD display. And the reason I bought it was because if I couldn't get Solaris to recognize it, at lease, with direct printing from a camera or USB, I could copy my picture onto some flash memory and use my camera as the printer driver. But deep down, I was hoping for CUPS to recognize it.

Upon plugging it in the first time, Solaris CUPS responded and loaded the driver for Epson Stylus CX8400. I brought up my browser and put in the URL for http://localhost:631/ and then tried to use the browser links to have CUPS print a test page. But after shooting out 5 pages of blanks, then marking the top of the next 20 pages with a couple of characters each, the NX400 was definitely not happy. So I managed to dequeue the remainder of the print job, and shut down the printer and restart it to clear the job. I guessed this would happen and it did so nothing was new. But I decided to make a concerted effort to try each printer type under Epson listed in CUPS and see if those drivers would work. One by one, I tried for about an hour, working backwards from the bottom of the list. I finally tried the Gimp-print driver for the Epson CX3100, and to my great surprise, the test page printed beautifully. I couldn't believe it, and setup a remote system to network print using this printer. On the remote side, I configured it to issue out generic Postscript. And it too printed out over the network! Fantastic.

Fig. 1. Epson NX200 multi-function printer/scanner/copier

So I went back to Fry's Sunday and found they were out of stock. There, I notice another Epson printer, the NX200, which looks almost the same in size, design, shape, and even multi-function scanner/copier features, except for no colour LCD display. Instead, it has push buttons. But this too, offers PictBridge and USB/SD card direct printing from my camera. When I asked the sales clerk if he had any NX200 units in the back, he said, "No." However he explained the Palo Alto store had 14 in stock. But what was amazing was the $29.99 price tag. A truly excellent deal considering the print cartridges are worth more than that.

I rushed to the Palo Alto store and on a hunch, picked up another printer, the NX200. Rushing home, I unpacked it, and it was indeed identical, using the same cartridges, and had the same chassis and only varied by the display and button interface. Plugging it in, and configuring CUPS, indeed, it uses the same Stylus CX3100 Gimp-print driver and prints well under Solaris. I went back to the Palo Alto store in the evening to check if there were more, and picked up 3 NX200s, no limit, at $29.99 each. I figured my parents, in-laws, and other friends might need a printer as a gift.

In printing out colour pictures, I found the PictBridge from my DigCam to printer to work great. Colours were vivid and accurate and no PC needed. However, printing from GIMP on Solaris, simple line art prints beautifully and fast. But photo-printing is too light in 360 DPI as well as 720x360DPI, but too dark using 720x720 DPI and finer. I tried playing around with GIMP brightness and contrast and colour saturation. I managed to get the 720x360DPI mode to print acceptable albeit somewhat grainy pictures, and in doing so, I also accomplished what I originally set out to do - to print my kids ID photo collage and age/height/wt info on the picture for their start-of-school-year emergency packet.

Tuesday Jun 02, 2009

JavaOne/CommunityONne OpenSolaris 2009-06 Install

I'm blogging from the OpenSolaris install booth at CommunityOne/Javaone 2009 at Moscone Center, San Francisco. This must be the 10th show I've actively participated in. Prior years, I was a Java guy setting up talks, doing BOFs and sessions of my own or with a team, but in recently years, since moving over the C-side of Solaris drivers, that hasn't been the case. And in a way, it was a protest against policy on giving away bags to the Sun speakers, which I have a great collection of in the early years. LOL!

Of course, from an internal standpoint, my colleagues and I in the driver team always have a lot of fun doing bring up of systems on earlier versions of OpenSolaris. Some versions die horrible deaths and take hardware with it. But as part of the Instal-Booth staff at the show, I gave a final test run of the bits yesterday, and after a little bit of fiddling last night, I've now got 3 laptops installed with the June 2009 bits of OpenSolaris. BTW, we announced them yesterday.

Overall, the experience was pretty good. I've really gotten fond of USB-stick install, and so I carry around at least a few 1GB sticks. The image is about 800MB on the USB stick. The CD image is just under 700 MB. The USB stick seems to average just 18 minutes on my dual core laptop, and over 31 minutes from a USB CDROM drive. Most of the folks have some trepidation about install because currently, we're not bundling a partition utility. But colleague Mark Logan recently checked GNU parted ported to Solaris into the build tree, so it should be coming soon, at least on Nevada. It may take a bit of time to appear on formal install media, but what that means hopefully is that folks will be able to boot the runnable image, then upload via USB bits as a separate wad of stuff, and then unpack and run it. It includes NTFS support and I've gotten it to work on most disks and laptops and systems for dual-boot.

But just in case we have issues with some disks and VTOCs that don't quite follow a standard, I carry a Knoppix 6.0.1 bootable USB jumpdrive which seems to deal with partitioning a little bit better than Solaris due to a broader support for standard and non-standard VTOCs disks. Speaking of disks and VTOCs, some of the really cheap 2GB and 4GB USB sticks don't seem to follow VTOC standards either and while those sticks are flashable and bootable for OpenSolaris, for some reason, we can't install from them due to a particular read and mount issue. Most higher-end Sandisk USB sticks have worked great, and the higher quality sticks usually have been great. But the low-end 2GB+ ones have been problematic.

Armed with the right tools, OpenSolaris 2009-06, at least for me, installed fine, didn't kill my Windows slice, and most everything works. HD Audio, graphics, networking. I was even surprised when my Realtek USB wifi came up automatically with NWAM. That's impressive. Even my webcam works on both the Acer which has a built-in unit, and my el-cheapo A4Tech 720MJ $25 usb cam.

community one webcam image

Above is a picture of a developer session I sat in at Community One while playing with my webcam. I was video conferencing with another colleague via The A4Tech camera is fairly inexpensive but follows the USB Video Class standard and works fine with Solaris. It's been problematic in the past with OpenSolaris finding a cheap USB Video Class webcam because of cost. It seems like a lot of vendors either claim support but don't quite follow the standard, or use one of two other protocols. But with Microsoft demanding vendors to follow the USB VC standard for 2009 and later cams to have Vista certification, hopefully, more cheaper cameras will arrive on the market for under $25. I will testify that the on-board webcams for many netbooks and laptops, like the Toshiba M10 and R600 and for the Acer 8.9 and 10 inch netbooks, the Toshiba NB200 network, etc. all seem to have working USB webcams that run fine with OpenSolaris. One thing with the software on GNOME is that it's still a bit fresh and so the streaming images have streaks. I haven't looked at the source yet, but it may be that double buffering or lack there of is leading to streaking, or maybe some USB interrupt architecture that unnecessarily impacts streaming video is causing streaking on OpenSolaris. But the picture is still very usable.

Signing off for now. More conference to attend.

I did find out the latest Mozilla Firefox has some better security, but I used to set my forms to prefill name and email address for me, but those settings are lost. I have to figure that out

Wednesday Apr 01, 2009

Acer Aspire One AOA-150 Netbook Dual Boot with Solaris

I'm certain that with the plethora of April Fools postings, that it may be hard to write a serious how-to document on dual boot installation on the Acer Aspire One netbook. But I just picked up one last night from Fry's Electronics for just $299, new, and I've managed to get it to dual boot with Solaris withOUT blowing away the WinXP that comes pre-installed. My bro-in-law, who just picked up one of the last few from his local Costco for the same price was looking for online docs about how to do this, but there were few details, and thought he'd either come over to my place and have me do it, or read my blog for instructions.

Acer Aspire One 150 - Need the 8.9 inch Model

There were a few reasons why I went out and bought the Acer AOA-150. This is the model offered last year with 8.9 inch LCD, an Intel Atom 1.6GHz/120GB HD/1GB RAM platform. Around Christmas 2008, it was in stores for around $349, and just a few months later, it's now $299 for the same system, only with 160GB HD. There's also an Acer AOA-110 model which has an 8GB or 16GB SSD (Solid State Drive) which comes with a Linpus/Linux distro that supposedly runs well, but firstly, I'm not a big fan yet of SSD. Most of the low-end stuff is either way too slow on sustained I/O and/or way too unreliable. There's a lot of hype about SSD and auto-leveling. But that's the theory. How manufactures make SSD (at least the cheap ones for these devices) and how it deals with swapping and partitioning while auto-leveling, well, that, for me, it's not there yet, no matter how many senior article writers, analysts and Marketing pundits say so. Except for the best and most expensive flash with the best performing auto-leveling algorithms and error checking, most the flash aren't very fast or very reliable yet. And they're too darn small to dual boot and have any real working space anyway. So disk capacity was pretty important, and with these models having 160GB of hard disk, that was plenty.

Another reason for chosing the AOA-150 was Solaris compatibility. I've been hanging out at various Costcos and Fry's Electronics stores and playing with netbooks and opening up the Windows->Control Panel-> System->Hardware Devices panels. For the stores that haven't locked out that feature, it's provided me valuable info on what chips the makers are actually using inside. Of course, this is no guarantee Solaris will work until you get home and actually try it, but it gives me more confidence that Solaris will actually boot up and connect to the network if it's a device that's been reported on Sun's Big Admin HCL or by other users elsewhere online. Note that makers in this volume space often rev a system with different components without changing the model number, so you really need to check and have a store that will honour its return policy.

The 8.9 inch LCD Aspire seems to have most chips on my compatibility checklist. My main concerns are bootability, graphics, ethernet, WiFi and Audio. I would like to get the onboard camera working, but that's for later hacking. Maybe someone already got it working under Solaris and I just need to find it. For the most part, both AOA-110 and AOA-150 have a Realtek 8101E/8102E fast ethernet networking port. That's supported by the latest Solaris rge(7D) driver. The WiFi is Atheros AR5007E/AR5008E a.k.a AR242X-type of PCI-express adapter onboard, and that should be supported by the recent ath(7D) driver. Graphics is Intel onboard 945GMA Integrated graphics which works with our Xorg fairly well. And finally, the audio controller is standard Intel HD Audio spec compliant with what looks like a Realtek ALC HD Audio Codec. The latest SXCE audiohd(7D) driver has a parser that should be able to discover the codec capabilities and activate the sound properly.

Acer AOA-150 Blue

Note that Acer is now shipping a newer, 10.1 inch LCD model (AOD-150) which has the same resolution (1024x600) but bigger pixels. It's selling for $349 and I do notice more folks looking at it and not squinting as much, but the hard wired ethernet is now Atheros-based and probably an adaptation of the Attansic NIC which they acquired a year or two ago. There are opensourced BSD drivers for the Attansic NIC and I think even Murayama's Solaris Driver collection may have a sample Attansic driver, but I haven't tried it yet, and didn't want to risk it. Plus, it's $50 more. Maybe when it gets cheaper, like in a few months, I'll splurge and get another netbook and test the driver.

Steps for Dual Booting

As with most PCs, to dual boot a pre-installed WinXP/Vista box, requires the following steps:

  1. Resize the existing WinXP (either FAT32 or NTFS) disk partition to make room for Solaris.
  2. Create a Solaris2 type partition sufficient for your needs.
  3. Install the Solaris on the slice, and GRUB for the boot-loader

Assuming all goes as planned, the GRUB install finds all the other bootable slices and enumerates those too. The challenge with the Acer Netbook is doing any of those tasks without an Optical drive. Typically, it's not possible to resize the boot disk, so we try to boot from optical drive and then resize. Similarly, installing onto the boot device isn't possible either.

For the Acer, we can boot USB, and that means if you have an external USB DVD drive, then it's possible to install via CD and DVD media. There is another option and that's to install via USB flash drive. Opensolaris is about 700MB in base size and is a bootable CD-image. It can be converted to USB flash boot image by using the Mercurial tools. This can fit on just about any single 1GB USB flash drive which you can buy at Fry's or online for around $6 each. I recommend buying 2 of these as the extra one will come in handy for resizing the partition.

1. Resize the WinXP NTFS slice

Before partitioning WinXP NTFS, I highly recommend running the Windows disk defragment utility. It's in the Accessories under System Tools I think. This will compact most files into a contiguous near the front end of the cylinders on that slice and save a lot of time or anxiety over having the partitioning utility doing it on the fly. De-Fragging can take hours if you've put a lot of files onto the disk.

There are commercial packages like System/Partition Commander and Partition Magic that can do this. You'll need to source a USB external optical drive. I found the close-out XBOX360 HD-DVD USB player attachment device for $40 at Fry's Electronics. It plays both DVDs and HD-DVDs for XBOX360, but fronts as vanilla DVD/HD-DVD USB drive for any PC system. That's one option. If you neither want to buy an extra external optical drive, nor spend money on software, then you can try the Knoppix Rescue 5.1.1 or later and the QTParted utility that ships with the distro. Knoppix is a Debian Linux variant used widely for rescue disks. It's downloadable off many mirror sites on the Internet, and there is a free Windows executable that takes the ISO image and will flash a bootable USB stick with it. Since Knoppix 5.1.x is about 700MB, you'll need an extra 1 GB flash stick or larger. Since the Acer comes with WinXP already, it's easy enough to follow these Knoppix USB install instructions to create the bootable USB stick on the Acer itself. This takes about 10 minutes plus time to download the ISO image. Once the Knoppix USB stick has been created, reboot the Acer and hit 'F12' to select the USB stick as the boot device and proceed. Hit return on the first prompt for line/scan rate and when the GUI comes up, either open a terminal and run:

   $ su - root
   # qtparted

or follow the KDE menu and open the QTParted w/ root exec privileges (usually there are two QTParted entries in the KDE menu - the first on top is the one to click). This should bring up lots of slices. Scroll down until you see a number of sdaX entries. Select the first and this should show the internal disk drive. It should have a 6GB slice up front that is FAT32 and the remaining 150GB is formatted NTFS. Using the GUI and mouse, drag the tail of the second slice (NTFS) to reduce the size. To actually resize, you need to go to the main menu for the QTParted and select "commit." I have a new Acer that hasn't really been used. Its disk was negligibly fragmented and I didn't put any files onto it. So defrag'ging and resizing only took a few minutes. I ended up allocating around 40GB for XP and the remaining 110GB for Solaris.

2. Create a Solaris2 Partition

My older Knoppix 5.1.1 rescue image didn't know about Solaris type partitions. I haven't checked if the newer ones recognize it yet. But typically, Linux fdisk utilities have often confused Solaris partition types with Linux Swap types. The Solaris fdisk utility understands Solaris partition types, and supports Solaris2 types which are distinct and not confused with Linux Swap. Since I was planning to install OpenSolaris or SXCE onto the Acer, and fdisk is bundled, I decided to take a second USB flash drive and put OpenSolaris 2009-06 b110 on it. Since a lot of driver development has resulted in fixes since 2008-11, I recommend trying out a candidate 2009-06 build of OpenSolaris. Currently, that's b110 and the USB flash image is available a To actually copy the image to USB stick and make it bootable, you will need the usbcopy utility. This is downloadable via Mercurial tools repository and assumes you have hg(1) on your system, which seems to been in solaris Nevada for quite some time now. If you don't have those tools, please read Dave Miner's blog on OpenSolaris on USB sticks and get the tools to simplify making bootable USB sticks.

With OpenSolaris flashed onto a bootable USB stick, simply reboot the Acer with the USB stick inserted, and hit 'F12' to select the boot device, and boot the first entry. There may be a problem with the SD card reader driver - sdhost(7D) - which may cause the kernel to lock up later. There is a supposed fix for that and Dave Clack talks about it and has links to software on his blog. Save this for later. For now, we need simply need to edit GRUB when the USB stick boots, and hit 'e' twice and edit the kernel line to append a -B disable-sdhost=true and hit return, then 'b' to boot with that added parameter. This disables the sdhost driver.

After a minute, OpenSolaris will come up into a default "jack" session. I open a terminal window and run:

   $ pfexec bash
   # fdisk /dev/rdsk/c8d0p0

and then I follow the help (?) menus to create a new fdisk partition of SOLARIS2 type. Your device may vary if you use a USB DVD drive. The raw disk could have designation c1d0p0. Another way to find out is to run the format(1M) command. It will print out a list of available disks. When you've identified the target disk, hit Ctrl-C or type quit out of the format utility, and then run fdisk on the /dev/rdsk/[device] where [device] is the available disk selection you found for your Acer, (e.g. c8d0) with a p0 appended (e.g. c8d0p0). This can still be complicated for some, so Clay Baenziger has a Kshell script that provides an easy resize capability. I haven't tried it yet, but looking at the script, it looks like it does what I described manually. I like the manual way because I've had some issues with fdisk(1M) occasionally not setting the correct start cylinder so it clobbers the partition map with overlapping slices and that can lead to loss of data. So I just like to verify things manually before committing. I divided up my disk and preserved the 6GB Acer slice (actually a FAT32 diagnostic WinXP partition with recovery media on that slice (don't blow it away! - contains recovery media!), allowed WinXP about 40GB, and the remaining 107GB, I used for Solaris.

Install the Solaris

Both OpenSolaris 2009-06 b110 and Nevada SXCE b111 have networking and WiFi and Audio all taken care of. I've tried installing both and ended up sticking with Nevada SXCE because I had a USB DVD drive because I was at the end of a slow network connection at home and didn't want to eat bandwidth download latest and greatest packages through a remote repository. But if you don't want to download a huge wad of developer tools, and have the bootable OpenSolaris USB flash drive, I'd say that's a quick way to get Solaris up and installed.

Note on the Solaris SXCE b111 install, you should choose option 4 Console Text install if having issues with Default option 1 interactive Graphical install.

When the install is done, GRUB boot-loader gets written to the disk and it seems to find not only Solaris, but the WinXP partition as well as the diagnostic partition, which are all bootable. If things went well, hopefully, you've preserved your WinXP and diag slices and now have a dual boot Acer.

Acer with Open
Solaris Logo

One last finishing touch of course is to put the sticker on it!

Tuesday Feb 10, 2009

Hacking nevada audiohd parser for S10 update 6

I received a phone call from a partner asking about running a demo on a new workstation/desktop platform at a tradeshow soon. He needed to get audio working on a number of systems to play simple clips, maybe some online YouTube stuff. He knew the Solaris audiohd driver was working great in latest Nevada SXCE but he hasn't been able to get the same support for audiohd drive on Solaris 10 update releases.

Just last week, a colleague mentioned the same problem on a new hardware platform also going through bring up with Solaris 10 update. So I got around to finally trying to back-port the latest audiohd codec parser to S10 from the Nevada source. Luckily the work was trivial. I just needed to remove a single function symbol in a struct and comment out a couple other lines for audiohd_quiesce() and rebuild on S10. The code needs to compile using Sun studio compilers 11 or later or a full complement of GCC compiler tools with C99 support. On solaris 10, just 15 minutes and I have audiohd working with a number of new platforms. The codec capabilities parser is sure great.

I don't know if there are plans in place to back-port the parser formally to S10 update. Audio is still considered a secondary function, and likely, that's the priority where it'll remain. But I know for users like myself, audio is clearly a top priority to get working on any solaris system. Plus, I've been getting re-acquainted with all that 80's synth band music which I hadn't heard in a while, like Depeche Mode, Electronic, and New Order. I just bought the best-of collections for all 3 bands and listen to them on my test S10 lab boxes. Kinda cool and nostalgic at the same time.

I've put together a src tar-ball and uploaded it to Hopefully, some folks can get some use out of it if they plan to stick with S10 update only.




« July 2016