Installing PCL6 Drivers to a Samba/CUPS Print Server

First, a little background...

The classic procedure for installing drivers to a printer shared via CUPS with a raw Samba frontend, usually is roughly something like this:

  1. Create printer in CUPS
  2. Open shared printer properties in Windows
  3. Install drivers via Advanced tab

For me, this worked great, most of the time, assuming that the driver was either PS or PCL5(e). However, PCL6 drivers rarely loaded properly. They crashed upon upload, and the driver rarely ever worked, if point 'n print even installed the driver. As I understand it, the root of the problem is that the drivers need a valid "form" database specific to the driver to be stored on the server in order to load, but valid form data can only be created by executing the driver. On Windows servers, this isn't a problem, but Samba servers cannot execute the windows driver code in order to generate this form. PCL6 drivers are particularly finicky about this, and often times will refuse properly copy to the server.

The solution I've come up with is to load the driver entirely on a Windows PC first, and tell Samba to copy the drivers and related forms, ACLs, etc over. Some of the values I use here for the printer names, etc, are very generic and only specified to match the naming standards in my environment. Feel free to change your printer setup to suit your needs.

The Procedure
On a Windows PC:

  1. Install the printer as you would normally for TCP/IP printing on a windows PC.
  2. Rename the printer to the share name you will be using (i.e., CopierCP5000)
  3. Open the printer properties
  4. Share the printer using the same name (CopierCP5000)
  5. Set the printer description to the printer name (i.e., Copier CP 5000)
  6. Set the printer location to the office name and city (ACME Abu Dhabi)
  7. Usually under the Accessories/Options tab, update/get information from the printer
         This ensures that we obtain all the correct hardware configuration information for the device (duplexer, trays, hole punch, stapler, etc)
  8. Open the Advanced tab and click the "Printing Defaults" button
  9. Click on each tab and allow the tab to load
         This ensures that the form values for each tab are created.
  10. Still inside the Printing Defaults, change the page orientation to Landscape, hit apply, change the page orientation to Portrait, and hit apply. Click OK.
  11. Close the printer properties by clicking OK

Next, on the server:

### Set up the printer in CUPS, i.e.:
lpadmin -p CopierCP5000 -L "ACME Abu Dhabi" -D "Copier CP 5000" -v lpd://192.168.xx.xx -m raw -E
smbcontrol smbd reload-config
 
### Copy the drivers, forms, ACLs, etc from the Windows PC
net rpc printer MIGRATE ALL CopierCP5000 -S mypcname -Uusername

Finally, test the driver in Windows:

  1. Open the local Printers control panel (shortcut command below for Win7 users)
         rundll32 shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder
  2. Delete your shared printer
  3. Right-click in the control panel window and select "Server Properties"
  4. Open the Drivers tab
  5. Select your driver and click "Remove".
  6. Proceed with removal and close the server properties window.
  7. Open \\servername\
  8. Double-click your printer
  9. Print a test page
         If this fails, try restarting the local PC's Print Spooler service

So far I've only tested this on a few of our known-problematic printers that have PCL6 drivers available, and it's worked perfectly in each case. However it you notice this doesn't work for you, post a comment and I'll see what I can do to help.

Palm Pre: Coming Soon to Muchtall?

I just got this email in my inbox this morning (BCC'd to me):

From: (My Boss)
To: (Our Company Sprint Rep)
Subject: Palm Pre
What are the chances of getting our hands on a couple of these when they are released?
(Other Palm User) from (Our Company) and (Muchtall) from my office are waiting patiently for theseā€¦.
Thanks,
(My Boss)

Pretty awesome. Hopefully our Sprint rep can swipe us a couple before the masses clean the stores out.

Update 6/2: Just got an IM from my boss:

(11:17:23 AM) Boss: hey you available for lunch on Thur?
(11:17:32 AM) Muchtall: Sure
(11:17:43 AM) Boss: Im gonna get our Sprint reps to take us out

Sweet!

Update 6/8: So I was greeted by this email earlier this morning:

To: Boss (fwd'ed to Me)
From: Purchasing Dept
Subject: (Muchtall's) Phone
Just received call from Sprint, phone on backorder. Not sure when resupply fulfilled, will keep you in touch.

Which sucks. However, a few hours later, I get this email:

From: Corporate Sprint Rep
To: Purchasing Dept (fwd'ed to Me)
Subject: Pre
Inventory is expected tomorrow so you should have on Wednesday.

Awesome! I can't wait!

FeedReader: My New Favorite RSS Aggregator/Reader

My requirements for an RSS feed reader were simple:

  • Windows Support
  • Toaster Pop-ups (with individual news item titles)
  • Feed filters
  • Free
  • I had been using FeedDemon for a while, but it missed the second half of my toaster requirement. That and for whatever reason it seems to take days to get updates to feeds, even when I'd tell it to update sooner.

    I recently switched to FeedReader, and I have to say, if you're looking for a Windows-based RSS reader, you should make this the first client you try. It will probably be the last one you'll need.

    If you aren't using an RSS reader, I highly recommend it. They make life so much easier when you are trying to keep up to date with your favorite news sites, and most sites offer an RSS feed nowadays. It's nice to be able to just open FeedReader and see a list of what sites have updated articles, and even limit the stories to the topics you want. In my case, it's made keeping up with all the latest Palm Pre news a snap. Instead of periodically refreshing 10-15 different sites in Firefox, I just listen for that chirp.

    SourceForge Spam (or How I Learned to Stop Worrying and Just Cancel My Account)

    After having a SourceForge account for about 10 years, I'm canceling it for one reason and one reason alone: Spam. SourceForge has this "feature" where anyone can email you at yourusername@users.sourceforge.net, and they will happily forward it on to the email address you have on file with SF. That's great, except, I don't want spam bots emailing me. It would be great if you could either opt out of this behavior, or even specify a human-readable anti-spam address as the forwarding address, but SF doesn't offer either of these options. It's either you have an account and all the crap that comes with it, or you have nothing. So I choose nothing.

    Thanks for nothing SourceForge.

    So I guess if I actually want to use the SF site for forum activity, I'll have to re-create my account each time.

    Update: Ok I lied, sort of. Turns out that if you delete your SF account, you can't come back and re-create it. This sucks because I like my persona, and should I come back, I'd like to re-use it. So now I'm willing to give feedback a chance. Vote for Solution 3!: SourceForge Spam Solution

    Update 10/15/2009: You complained, and SF listened. I got a Tweet last week from @sourceforge informing me that they have added an option to allow you control over your alias behavior. You can find this setting at https://sourceforge.net/account/. Go there. Now! That is all.

    Countdown to Palm Pre

     
    I'm dying for this thing to come out. I'm even more hopeful that I'll get my hands on it come release day.
     
     
     


     
     
    Countdown to Pre-Day

    Restreaming ASF to MP3 Via Icecast and VLC

    Say you have an internet radio stream that you like to listen to. You like to actually get up from your computer once in a while and go outside, so you want to play it on your iPhone/Blackberry/G1/Treo/Centro/Pre/Whatever as you're out and about. But wait! Due to poor decision making by your beloved stream provider, your favorite stream is only in Microsoft's poorly-supported ASF streaming format. There's no MP3 or OGG options! Many if not all of the phones I just mentioned may/will not play these streams, at least not natively. MP3 on the other hand, is ubiquitous (though, given, not truly as free as OGG). One option you may have, if you run your own Linux server, is to download the ASF stream, re-encode it to MP3, and re-stream it via your own Icecast server. Icecast is easy enough to set up, however information on setting up the VLC portion of this workaround online seems a little slim online, so I thought I'd make a post simplifying the setup.

    First off, check to make sure your VLC has "Shout" Shoutcast/Icecast output support:

    vlc --list | grep access_output_shout

    You should see the following in the output:

    access_output_shout IceCAST output

    If not, you may need to either re-install with a version of VLC that supports shout output, or recompile it with shout support.

    Then run the following command, altering the items in bold for your purposes (all on one line):

    cvlc "http://classicalstream2.publicradio.org/classical" ':sout=#transcode{acodec=mp3,ab=192,channels=2}:duplicate{dst=std{access=shout,mux=raw,dst=source:YOURPASSWORD@your.icecast.server.com:8000/mpr.mp3}}' --sout-shout-mp3 --sout-shout-name="MPR MP3 Restream" --sout-shout-description="Restreaming of MPR" --sout-shout-url="http://minnesota.publicradio.org" --sout-shout-genre="Liberal Tripe" --loop

    Assuming you have already properly set up your Icecast server, you should now have a mountpoint running the stream you have just created.

    Note that VLC seems to have problems parsing some ASX playlist files. You may need to download the ASX file with wget to investigate what the actual stream URL is. For example, the stream above came from "http://minnesota.publicradio.org/tools/play/streams/classical.asx", which had these contents:

    <ASX version="3.0">
       <ABSTRACT>The Windows Media Stream for MPR's Classical Music Service</ABSTRACT>
       <TITLE>MPR Classical Windows Stream</TITLE>
       <AUTHOR>Minnesota Public Radio</AUTHOR>
       <COPYRIGHT>2009 Minnesota Public Radio</COPYRIGHT>
       <MOREINFO HREF = "http://minnesota.publicradio.org" />
       <ENTRY>
          <TITLE>MPR Classical Windows Stream Underwriter</TITLE>
          <COPYRIGHT>2009 Minnesota Public Radio</COPYRIGHT>
          <REF HREF="http://ondemand2.publicradio.org/ondemand/joinnow.wma"/>
          <BANNER HREF="http://www.publicradio.org/applications/underwriters/images/prepend/content/joinnow.gif">
              <MOREINFO HREF = "https://contribute.publicradio.org/"></MOREINFO>
          </BANNER>
       </ENTRY>
       <ENTRY>
          <TITLE>MPR Classical Windows Stream</TITLE>
          <COPYRIGHT>2009 Minnesota Public Radio</COPYRIGHT>
          <REF HREF="http://classicalstream2.publicradio.org/classical"/>
          <BANNER HREF="http://www.publicradio.org/applications/underwriters/images/prepend/content/joinnow.gif">
              <MOREINFO HREF = "https://contribute.publicradio.org/"></MOREINFO>
          </BANNER>
       </ENTRY>
    </ASX>

    As you can see, the first item in the playlist is NPR's obligatory call (**cough** commercial **cough**) for donations (http://ondemand2.publicradio.org/ondemand/joinnow.wma). The second is your actual stream URL (http://classicalstream2.publicradio.org/classical). You'll want to use the stream URL in your VLC command.

    Also, I have seen cases where VLC pukes on some ASF streams. Though I haven't confirmed this, it appears to be a bug with downsampling/resampling (http://mailman.videolan.org/pipermail/vlc-devel/2009-February/056823.html). In these cases, you may need to look that the 1.0.0 prerelease versions, which may not be available on your distro release (Fedora, for example, doesn't have it until 11). Good luck!

    UPDATE 10/27/09: It would appear that the precompiled RPMs offered on the VLC site for 1.0 or higher do not contain support for shout output. Not a big deal. Just download the source RPM (e.g., from http://download1.rpmfusion.org/free/fedora/development/source/SRPMS/) install the sources (rpm -Uvh vlc-1.0.3-0.1_rc.fc12.src.rpm), and edit the vlc.spec file (usually found in ~/rpmbuild/SPECS/). Look for a line that says "--enable-realrtsp \" and add a line below it that says "--enable-shout \". Save and close the file, then run "rpmbuild -ba vlc.spec". After it recompiles, install the updated RPMs (cd ~/rpmbuild/RPMS/x86_64/ ; yum --nogpgcheck reinstall vlc-core-1.0.3-0.1_rc.fc11.x86_64.rpm vlc-1.0.3-0.1_rc.fc11.x86_64.rpm). Make sure to alter the above paths to reflect your architecture, Fedora release, and vlc version.

    Palm Pre Release Date Hinted?

    Could this be a hint at the release date for the Palm Pre?

    http://blog.palm.com/palm/2009/04/sprints-new-pre-portal-news-videos-tweetsand-doughnuts.html

    I'm taking a shot at yes. Here's why it makes sense to me:

    - Why else would you put up a countdown to zero (Doughnut, btw) to such an obscure holiday?
    - As has been restated by Palm and Sprint repeatedly, the date falls in the first half of the year (albeit late).
    - It's a few weeks after the start of the just-announced Sprint vacation freeze
    - It's the weekend before WWDC, potentially stealing the iPhone 3.0 / next-gen iPhone thunder.

    Now, my only skepticism of the date is how close it lands to WWDC. Either the Pre will be a massive hit, and the buzz will be loud enough going into the following week to drown out the potential iPhone announcement, OR the Pre buzz quickly loses steam following launch, drowned out by the well-established Apple fanboy crowd. The potential for loss on this toss of the dice is pretty great.

    That's why I'm making one additional prediction: Palm drops another bomb on release day. Probably some yet-unseen killer app that the iPhone doesn't have. I'm guessing something that exploits the multitasking capabilities, and furthermore, can't be done via push. Palm needs something more just after the release to keep the unique multitasking abilities of the Pre in the front of people's minds right through the iPhone announcement.

    If I'm right, you can say you heard it here first.

    Update 5/20/2009: So close.

    Obama Defines "Change".

    "Change"

    http://yro.slashdot.org/article.pl?sid=09/04/07/1330229

    Not that I have a problem with this policy. I just think it's funny how the mass of Obama supporters assumed that this was what "Change" meant. In reality, the only Change in store is more government control over you.

    Palm Pre Goodness

    I've been drooling over this device since it was announced in January. Now that ads are actually starting to show up, the only thing left to see is a release date.

    UPDATE: Adding new commercial clips as they come out.

    PROC Machine Chk processor sensor transitioned to non-recoverable

    Just making a quick post to help out any Googler's out there looking for the solution to this problem. I had a Dell SC1425 pizza box server with an error/alarm light on it's face recently. The alarm showed up when the server had been rebooted after a full lockup. I downloaded the Dell DSET utility and ran a report, which found this error:

    PROC Machine Chk processor sensor transitioned to non-recoverable

    Basically this means that the mainboard detected that the processor stopped responding (i.e., locked up), which of course we already knew.

    To get rid of the alarm light, just run DSET again and tell it to clear the log. After you do so, your server lights should once again be a calming, cool blue.

    Resolving a Persistent spoolsv.exe Error/Crash

    Today I was troubleshooting a couple of network printers. One of them, I believed, had an incompatibility with "Standard TCP/IP" printing, via RAW communications. I tired other printer port options, including the HP TCP/IP port. I found out later on that the printer itself (a multifunction copier actually) did not have printing capability enabled. In the process of installing a printer driver later in the day, I ran into this error:

    The instruction at "0x00000000" referenced memory at "0x00000000". The memory could not be "written".

    The error wouldn't go away. Reboots did nothing. Clearing out all registry references of the printers and drivers that I had been troubleshooting did nothing. Deleting my printer drivers folder only made things worse (as you'll read later) Even a reverting to an earlier System Restore point failed. Finally, after finding tidbits of information online here and there, nothing with a complete solution, I tried removing this key:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\HP Standard TCP IP port

    I then restarted "Print Spooler" in the Services control panel (services.msc), and my Printer control panel finally displayed properly, without crash. Unfortunately for me, I then had to delete all my printers, as I had deleted all of my printer drivers and none of the installed printers were functional.

    So if you run into this error, try deleting the key above before attempting anything else.

    Obama Yuks It Up Over the Collapsing Economy

    Now, I'm no fan of the American auto industry either, but for much different reasons than Obama. Obama sees the auto industry as a whole as evil greedy capitalist pollution profiteers, and clearly takes joy in overseeing their demise. He sees the collapse of the American auto industry as a success of his ideals.

    I, on the other hand, dislike what the American automobile makers have allowed to have happen to their once prosperous industry. One has to ask the question: Why are the foreign owned, yet locally manufactured, automobiles doing just fine in today's economy, yet the American manufacturers are struggling? The answer: Unions. The successful auto makers never bowed to union pressure. Foreign companies realized the hazard of giving up control of their own companies to socialist union thugs, pushing unsustainable pension plans and benefits. If the American auto industry had the spine to kick them out years ago, they'd be much better off now.

    MuchTall.com: In With WordPress, Out With PHPNuke

    I'm finally taking the plunge into WordPress. I've moved all of the accounts (minus passwords), categories, stories, and comments over from the old PHPNuke site. I have yet to pretty up the theme, but I just couldn't wait any longer. PHPNuke was just too difficult to maintain, and worse, was prone to spamming from bot-created accounts.

    More changes to come.

    Recovering a PPPoE password from an Actiontec M1000

    If you ever get into a situation where you can't find the password used on your Qwest DSL account, and you have an Actiontec M1000 router (or similar), give this procedure a shot:

    - You can find your account username on the Quick Setup page, listed as "PPP Username"
    - Set your router admin password if you have not already done so. Take note of the username and password you set. It's important.
    - Go to Start --> Run and enter "telnet 192.168.0.1"
    - Login with your admin account and password, i.e., admin/admin
    - Run this command "cat /var/tmp/pppoe_password". The output is your account password.
    - Confirm your account credentials by logging in at at http://www.qwest.net

    Good luck!

    Update 5/29/2013: You may also want to check out my updated post: Recovering the PPP Username and Password from a Centurylink Actiontec C1000A

    Cisco: Error opening tftp://url (Undefined error)

    Though I still know my way around, it's been a while since I messed with a Cisco router to any great degree. But today at work I had to configure a Cisco 1750 to reply to one of our offices. I like backing up configs before I blow away a router, just so that I have a copy of what was on there. I knew that I could TFTP it to my PC, assuming I set up a TFTP server. So I went and installed Tftpd32 to my PC, set up a secondary IP on the Cisco router on my local network, and fired up the following command on the Cisco console:

      copy startup-config tftp://172.16.1.142/config.txt

    I then saw on Tftpd32 that the router connected, and created the file "cisco.txt", however the transfer failed and the resulting file was 0 bytes. This is the error I got on the console:

      %Error opening tftp://172.16.1.142/config.txt (Undefined error)

    Clearly, the Cisco was connecting, it just wasn't sending the content of the file. After running a standard FTP test, I noticed that the Cisco showed up to the server as the PRIMARY interface IP, not the secondary one. Once I re-assigned the primary IP address to the local IP range, the transfer succeeded.

    So, long story short: If you see this error, check that the primary IP on the interface facing your network is in the same subnet as you (or the next hop), otherwise the Cisco might show up as coming from an unreachable IP.

    Deleting Specific Entries from Conntrack in Linux

    First, use conntrack to correctly identify your entries:

        conntrack -L -s 172.16.1.45 -d 123.123.123.123

    This should display any connections that came from the internal IP of 172.16.1.45 destined to 123.123.123.123

    Once you have confirmed the connections shown are the ones you with to delete/reset, paste the following after the command from above:

        conntrack -L -s 172.16.1.45 -d 123.123.123.123 | sed 's/=/ /g' | awk '{print("conntrack -D -s "$6" -d "$8" -p "$1" --sport="$10" --dport="$12)}'

    This will print a list of the commands that would run to delete the connections. Replace "print" with "system" to execute the deletions:

        conntrack -L -s 172.16.1.45 -d 123.123.123.123 | sed 's/=/ /g' | awk '{system("conntrack -D -s "$6" -d "$8" -p "$1" --sport="$10" --dport="$12)}'

    Finally, re-run the list command to see that all the entries have been removed:

        conntrack -L -s 172.16.1.45 -d 123.123.123.123

    And you're done!

    HOWTO: Forwarding a USB device to a Guest VM in Xen on Fedora

    This procedure works with fully virtualized VMs. I would assume it works with paravirtualized VMs as well...

    Shut down and power off your VM

    Unplug and re-plug your USB device to see what it appears as in dmesg, then run
        dmesg | grep ^usb

    See these lines?:
        usb 3-2: USB disconnect, address 7
        usb 3-2: new low speed USB device using uhci_hcd and address 8
        usb 3-2: configuration #1 chosen from 1 choice

    This indicates that it is connected to Bus 003 as Device 008. Now run this:
        lsusb

    Now look a device at Bus 003 Device 008:
        Bus 003 Device 008: ID 04b9:0300 Rainbow Technologies, Inc.

    Note the ID...
        04b9:0300

    Open the config.sxp file for the domain, usually located at:
        "/var/lib/xend/domains//config.sxp"

    Look for a section similar to this:

        (platform
            ((usb 1)
                (device_model /usr/lib64/xen/bin/qemu-dm)
                (boot c)
                (rtc_timeoffset -18008)
                (pae 1)
                (apic 1)
                (localtime 1)
                (acpi 1)
            )
        )
       
    Add your USB device:

        (platform
            ((usb 1)
                (device_model /usr/lib64/xen/bin/qemu-dm)
                (boot c)
                (rtc_timeoffset -18008)
                (pae 1)
                (apic 1)
                (localtime 1)
                (acpi 1)
                (usbdevice host:04b9:0300)
            )
        )

    Restart xend:
        /etc/init.d/xend restart

    Start your VM

    Why "root" isn't a Domain Admin on Fedora w/smbldap-tools

    For about 2 years now at work, our "root" (aka, Administrator) account hasn't been showing up as being part of the "Domain Admins" group within Windows, or when running "id root" or "net rpc user info root". It used to, but for whatever unknown reason, stopped working.

    The root account in our LDAP directory was, admittedly, messed up. However, it worked on our local server, who were talking with our PDC directly. It just didn't work on our remote BDC-connected systems.

    Back around this time, I'm pretty sure we made a change to our enterprise-wise /etc/ldap.conf config: We added "root" to the nss_initgroups_ignoreusers list. The effect is that the local auth mechanisms only use the local files (passwd and group) for users in this list, skipping LDAP checks. Therefore root will never get the "Domain Admins" group membership in this configuration.

    Now, the question is, is this normal, or am I missing something? I really don't care at this point. The workaround for me is to simply create an admin user that gets treated as THE admin account. The alternative is to remove root for the ignore list. However, I would suggest against this as it could create startup and login delays if the LDAP database doesn't start for any reason.

    Hope this helped somebody. I struggled with it and searched for a solution long enough that I figure it merits a quick post.