Author(s): Louis Ouellet
In this project, we will repurpose an old Canon Color ImageClass MF8350CDN printer using a Raspberry Pi. Since Canon no longer supports Windows 11 for this device, using a Raspberry Pi as a print server allows us to extend the printer’s lifespan. It also enables features such as AirPrint for convenient wireless printing from Apple devices.
Below is a step-by-step guide to:
Once your Raspberry Pi is powered on and connected to your local network, use SSH to access it:
ssh <username>@<RaspberryPi_IP_Address>
(Replace <RaspberryPi_IP_Address>
with the actual IP address.)
(Replace <username>
with the username. Typically pi
.)
Update and upgrade the system:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y
Then, install required packages:
sudo apt-get install -y git vim nano wget curl cups sane-utils libsane-common samba samba-common-bin avahi-daemon python3-pip python3-netifaces python3-cups
Next, we need to install the Canon printer drivers. For the Canon ImageCLASS MF8350CDN, you can use the UFRII drivers:
wget https://laswitchtech.com/_media/en/blog/2025/01/20/linux-ufrii-drv-v600-us-02.tar.gz tar -xvf linux-UFRII-drv-v600-us-02.tar.gz cd linux-UFRII-drv-v600-us/ sudo ./install.sh
Add your user to the lpadmin
group so it can manage printers:
sudo usermod -aG lpadmin <username>
(Replace <username>
with the username. Typically pi
.)
Edit the CUPS configuration file:
sudo nano /etc/cups/cupsd.conf
Look for:
Listen localhost:631
Comment it out:
#Listen localhost:631
Then add:
Port 631
This allows CUPS to listen on port 631 on all interfaces.
Within the file, locate sections like:
<Location /> Order allow,deny Allow @local </Location>
Make sure they include Allow @local
so that devices on your local network can access the CUPS interface.
sudo service cups restart
From another computer on the same network, open a browser and go to:
https://<RaspberryPi_IP_Address>:631/admin
Click Add Printer. If the Canon is connected via USB, select it from the list. If it’s a network printer, select the socket/IP listing.
AirPrint allows iOS devices to discover and use your printer without additional drivers.
cd ~ git clone https://github.com/tjfontaine/airprint-generate.git cd airprint-generate sudo python3 airprint-generate.py -d /etc/avahi/services sudo systemctl restart avahi-daemon
Now, your printer should be discoverable as an AirPrint printer on iOS devices.
You can use Samba to share a folder on the Raspberry Pi for scanned documents.
cd ~ mkdir scans chmod 777 scans
sudo nano /etc/samba/smb.conf
Add the following to the end of the file:
[scans] path = /home/<username>/scans browseable = yes writable = yes guest ok = no valid users = pi create mask = 0777 directory mask = 0777
(Replace <username>
with the username. Typically pi
.)
sudo smbpasswd -a <username>
(You will be prompted for a password twice.)
(Replace <username>
with the username. Typically pi
.)
sudo systemctl restart smbd
Python Startup Monitor is a handy tool that allows you to retrieve the system information such as its current IP.
cd ~ git clone https://github.com/LaswitchTech/pythonStartupMonitor cd pythonStartupMonitor chmod +x *.{sh,py} sudo ./install.sh sudo chown <username>:<username> config.json ./monitor.py --install ./monitor.py --start
(Replace <username>
with the username. Typically pi
.)
This will install the service to your system and run it automatically upon startup.
By following these steps, you can give new life to an older printer model, such as the Canon Color ImageCLASS MF8350CDN, with a Raspberry Pi. You now have a fully functional print server that supports CUPS for general printing, AirPrint for iOS devices, and Samba for sharing scanned documents across your network. Adding Python Startup Monitor ensures key services remain active and easy to manage. Enjoy your new (old) printer!