Skip to content

Network printing to a Canon MX850 from linux (BJNP cups driver)

The Canon PIXMA MX850 (and other printers from Canon it seems) have an ethernet port, but do not support any standard network printing protocol, therefore they are not supported in cups out of the box. The protocol used is called BJNP, and uses tcp/udp ports 8611 to 8614.

Fortunately, an open source BJNP driver for cups has been written. You'll find it here, along with install instructions: http://www.fazant.net/cups/.

Once you have BJNP support in Cups, your printer should be auto-detected. You'll be able to print using the Gutenprint PIXMA iP5300 driver.

The following sources provided useful information to me:

- OpenPrinting MX850 page
- OpenPrinting Forum post
- Ubuntu forums thread
- BJNP protocol backend for CUPS README

Using the HL-340 USB-serial adapter with Linux (1a86:7523, driver ch341)

Here is what dmesg reports :
New USB device found, idVendor=1a86, idProduct=7523
New USB device strings: Mfr=0, Product=2, SerialNumber=0
Product: USB2.0-Ser!

It works fine with the ch341 driver, I just had to add one line to drivers/usb/serial/ch341.c:
static struct usb_device_id id_table [] = {
{ USB_DEVICE(0x4348, 0x5523) },
{ USB_DEVICE(0x1a86, 0x7523) },
{ },
};

The relevant lines from my .config are:
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_CH341=m

From the module comments:
ch341.c implements a serial port driver for the Winchiphead CH341.

The CH341 device can be used to implement an RS232 asynchronous serial port, an IEEE-1284 parallel printer port or a memory-like interface. In all cases the CH341 supports an I2C interface as well. This driver only supports the asynchronous serial interface.

I'm currently using a "vanilla" kernel 2.6.25.4.

Scanning barcodes with linux and a webcam

My Nokia phones can do it, so I thought there must be a way to do it on my laptop too. I wanted a way to scan both "traditional" barcodes and "two-dimensional" ones, like the QR-Codes. Here is my solution.

You'll need :

- a v4l-compatible webcam + mplayer compiled with v4l support (or any other scriptable way to grab frames from the webcam)

- a scriptable image viewer, I use feh on my laptop

- ZXing

Follow the instructions to build the ZXing javase component, then open three shell windows, and run:

shell1 (grab the webcam output as last.jpg +- every half second):
cd /tmp ; while [ 0 ] ; do mplayer tv:// -fps 2 -tv driver=v4l:width=640:height=480:device=/dev/video0 -vo jpeg:quality=95 -frames 2 ; mv 00000001.jpg last.jpg ; done

shell2 (view what you grabbed):
cd /tmp ; feh -R 1/2 last.jpg

shell3 (scan for barcodes):
while [ 0 ] ; do ( java -cp javase/javase.jar:core/core.jar com.google.zxing.client.j2se.CommandLineRunner /tmp/last.jpg | fgrep -v 'No barcode found') ; sleep 1 ; done


So no nice GUI, but it seems to work well.


Linux Kernel 2.6.25 on Gentoo sparc (error: -m64 is not supported by this configuration)

I wanted to try the new 2.6.25 kernel on a Sunblade 100 I'm reinstalling. But immediately after entering "make" I got the following error:
arch/sparc64/kernel/asm-offsets.c:1: error: -m64 is not supported by this configuration
arch/sparc64/kernel/asm-offsets.c:1: error: -mlong-double-64 not allowed with -m64
arch/sparc64/kernel/asm-offsets.c:1: error: -mcmodel= is not supported on 32 bit systems
make[1]: *** [arch/sparc64/kernel/asm-offsets.s] Error 1
make: *** [prepare0] Error 2


I found the solution here, along with the explanation. To make it short, to get it to work, for now you'll have to type:
 # CROSS_COMPILE=sparc64-unknown-linux-gnu- make


Linksys WAG200G-EU stops routing UDP after a while (scripted reboot how-to)

It seems that after having been up for a couple of days, the WAG200G starts having issues routing UDP packets properly. This particularly affects VoIP traffic (here IAX2 on port 4569). The symptoms are that "regular surfing" works flawlessly, but the registration with the asterisk server fails. tcpdump shows no traffic on the server side. Restarting the WAG200G immediately solves the problem.

Here is how I restarted the router from the command line:
wget --http-user=admin --http-password=pa55w0rd \
--post-data='reboot=1&save=Enregistrer+les+param%E8tres&todo=reboot&h_reboot=1&this_file=Reboot.htm&next_file=index.htm&message=' \
http://192.168.0.1/setup.cgi

(replace password and IP address as appropriate)