20 Şubat 2026 Cuma

Raspberry Pi4 ile Canon MF 4450 için Yazdırma Sunucusu Oluşturmak


Merhaba. Yazının başlığından anlaşılacağı gibi, ağ bağlantısı olmayan Canon MF4450 yazıcımı Raspberry Pi4 ile yerel ağdan nasıl paylaşıma açtığımı anlatacağım. Bunu yapmak zaten oldukça kolay. Ben asıl bunu yaparken hangi yollardan geçtiğimi, hangi zorluklarla karşılaştığımı açıklamak istedim. O yüzden konfigürasyondan önce tasarımı tartışmak istiyorum.

Not: Yazının geri kalanında Raspberry Pi yerine RPi kısaltmasını kullanacağım.


Öncelikli konu platform seçimi. Başlıkta da yazdığım gibi ben RPi4'te çalıştım, daha doğrusu çalışmak zorunda kaldım. Elimde RPi 1B de var ve RPi 1B, bu iş için aslında donanım olarak yeterli. Disk olarak, bu makinada başka birşey çalışmayacaksa 8 GB'lık bir SD kart (4 GB işletim sistemi olmak üzere) ve bir de RPi 1'lerde onboard WiFi olmadığı için bir WiFi dongle gerekiyor. Ben RPi 4'te başka servisler de çalıştırdığım için disk olarak 128 GB'lik bir kart kullanıyorum ama bu da önemli ölçüde boş. Son olarak RPi 4'ün WiFi kartı onboard, bunun için ekstra bir donanım gerekmiyor.

Diğer yandan RPi4'ü sadece bu iş için kullanmak açıkça kaynak israfı, ancak RPi1'le başıma şunlar geldi:


İşletim Sistemi Dağıtımı

Bu iş için ilk önce RPi 1B'i denedim. Bu, 32-bit bir cihaz. Raspberry Pi OS'un (eski Raspbian) 32-bit sürümü resmi sitesinden indirilebiliyor. Bu Debian tabanlı bir dağıtım. Ben bunun lite sürümünü denedim çünkü RPi 1'ler her ne kadar grafik arayüzü çalıştırabilse de çok yavaş. Bunun dışında, Alpine RPi, DietPi ve piCore'u da denedim ancak bunlardan yalnız DietPi'yi kısmen kullanışlı buldum. Debian tabanlı ve RPi OS'un özelleştirilmişi gibi bir izlenim verdi. Ancak DietPi konfigürasyon scripti daha ilk boot'ta, çalışan bir internet bağlantısı istiyor. Bu konuya ileride değineceğim.

RPi4 ise 64-bit. Bunun için RPi OS'un 64-bit sürümünü resmi sitesinden indirdim. Bunun yanında Manjaro ARM, Ubuntu ve Fedora IOT de indirdim ancak ilk ikisini kullanmaya çok zamanım olmadı. Fedora IOT'nin mantığı hem klasik Fedora'dan hem de diğer dağıtımlardan çok farklı. Konfigürasyon için ignition adında cloud-init benzeri ama JSON tabanlı bir script kullanıyor. RPi OS ise başlangıç scriptiyle ayarlanıyor.


Raspberry Pi 1'de WiFi Konfigürasyonu

RPi 1 için bende TP-Link AC600 WiFi dongle vardı ve fark ettim ki, RPi OS'ta ve DietPi'da bunun chipseti (Realtek rtl8821au) için uygun sürücü olmadığından, kart otomatik tanınmıyor. github'da bu chipset için geliştirilen bir sürücü var, fakat indirmek için yine internet gerekiyor. Dolayısıyla RPi'i en başta kabloyla bağlamak zorunda kaldım. DietPi'nin en başta internet olmadan konfigürasyon yapamadığını söylemiştim. Bu durum yumurta/tavuk problemine yol açıyor. Alternatif: Github reposunu indirip SD karta yaz.

Bir de TP-Link'in TL-WM725N modelini (rtl8188eu chipset) sipariş ettim. Bunun sürücüsü RPi OS'ta var ve otomatik tanınıyor. Bu arada github'dan indirdiğim sürücüyü de derledim. gcc, make ve bc paketlerinin yüklü olması gerekiyor ve basit bir install-driver.sh scriptiyle derlenip dkms ile yükleniyor, ancak RPi1'in hızı nedeniyle derleme yaklaşık 4-5 sa sürüyor. Bir de özellikle DietPi gibi küçük olması için optimize edilmiş bir dağıtıma yalnız 1-2 kere kullanacağım ekstra paketler kurmak çok hoşuma gitmedi.


Raspberry Pi 1'de Yazıcı Konfigürasyonu

RPi1'le yaşadığım ikinci sorun (WiFi'dan sonra) Canon MF4450'nin 32-bit ARM için resmi olarak bir sürücüsünün olmaması. Başka model yazıcısı olup RPi1'de sorunsuz çalıştırabilenler bu bölümü atlayabilir.

Yazıcının sürücüsünü Canon'un resmi sitesinden indirdim. Bu sayfaya göre Linux ARM destekleniyor. Dosyada (linux-UFRII-drv-v620-m17n-20.tar.gz) ARM64, x86 ve x84 gibi platformlar için .deb ve .rpm dosyaları var ama ARM32 yok. O nedenle Sources dizinindeki kaynak kodları derlemeye karar verdim. Ama bu yine, sadece derlerken kullanacağım bir yığın paket kurmak demek. Üstelik sonuç olumsuz (gidiş yolunu merak etmeyenler burayı atlayabilir). Sürücüyü derlemek için autoconf ve automake başta olmak üzere toplam 11 tane paket kurmak gerekiyor.

apt install autoconf automake libcups2-dev libglib2.0-dev libltdl-dev libtool-bin libglade2-0 libglade2-dev libgtk-3-dev libxml2 libxml2-dev

Bunları kurduktan sonra sırayla cnrdrvcups-common-6.20 ve cnrdrvcups-lb-6.20 dizinlerindeki allgen.sh scriptini çalıştırıp kodu derledim ve make install ile dosyaları kopyaladım. Bir de DietPi'de cnrdrvcups-lb-6.20'yi derlerken bir gösterici dönüştürme hatası alınıyor. O nedenle CFLAGS değişkenini -fpermissive olarak ayarlamak gerekiyor. Ben bunun için allgen.sh içindeki case yapısına aşağıdaki case'i ekledim:

    "armv6l")
        _machine_type="MACHINETYPE=armv6"
        _cflags="CFLAGS=-fpermissive"
    ;;

Bunları yaptıktan sonra, ne derlerken ne de CUPS'tan yazıcıyla ilgili bir hata aldım, ama lokalden gönderdiğim yazdırma istekleri dahi yazıcıya ulaşmadı. Sorunu henüz çözemedim ama denemediğim bir kaç şey var, çözebilirsem bu ayrı bir makale konusu olabilir. Özetle hem WiFi sorunu -çözülmüş bile olsa- hem de yazıcı sorunu nedeniyle RPi 1B ile zaman kaybetmeyip çalışır haldeki RPi 4'e yoğunlaşmaya karar verdim.


Kurulum Adımları

Yazının bu bölümünde "Raspberry Pi Print Server" makalesini referans aldım. RPi 4 kurulumunu uzun uzun anlatmayacağım. İmaj dosyasını SD karta aktarıp boot ettikten sonra, bir sihirbaz kullanıcı adı ve WiFi gibi ayrıntıları sorup sistemi hazırlıyor. Eğer SSH açık değilse

sudo systemctl enable --now ssh

komutuyla açılabilir. Ardından makalede sözü edilen paketleri yükledim:

sudo apt install cups printer-driver-gutenprint hplip samba cups-bsd

Açıkçası hplip ve printer-driver-gutenprint pek işime yaramadı. Yazıya göre Canon dahil birçok yazıcı sürücüsü içeriyormuş ama görünüşe göre MF4450 modeli yok. cups-bsd ise Canon sürücüsünün bağımlı olduğu bir paket.

CUPS bir web arayüzü üzerinden çalışıyor ve burada ayar yapabilmek için kullanıcının lpadmin grubunda veya root olması gerek. Aşağıdaki komutla kullanıcı kendini bu gruba ekleyip CUPS'a dışarıdan erişim izni veriyor:

sudo usermod -a -G lpadmin $USER
cupsctl --remote-any
sudo systemctl restart cups

Bu adımdan sonra ağdaki bir bilgisayardan http://<makinaIP>:631/ adresinden erişilebiliyor olmalı. Erişim yoksa host firewall çalışıyor olabilir. Bu durumda sudo ufw disable ile firewall'u kapatarak veya söz konusu port açılarak erişilebilir. Hala erişilmiyorsa o portta çalışan bir process olup olmadığı ve CUPS'ın çalışıp çalışmadığı kontrol edilmelidir.

Buraya kadar herşey tamamsa küçük bir parantez açıp yazıcı sürücüsünü kurmalıyım.


Raspberry Pi 4'de Yazıcı Konfigürasyonu

RPi 4'te yazıcıyı tanıtmak için, RPi 1 için kullandığım sürücü paketini kullandım. Yazıcıyı bağladıktan sonra ARM64/Debian dizinindeki .deb dosyayı aşağıdaki komutla kurdum.

sudo dpkg -i cnrdrvcups-ufr2-uk_6.20-1.20_arm64.deb

Burada dikkat edilmesi gereken bir ayrıntı var: Eğer bir pencere yöneticisi kuruluysa, kurulum sırasında masaüstünde yandaki gibi bir pencere açılıyor. Siz SSH üzerinden kuruyorsanız, kurulum durdu gibi geliyor. Halbuki program GUI üzerinden girdi bekliyor. Bu nedenle kurulum sırasında monitörü de bağlamak gerekli. Bağlı yazıcı otomatik tanınıyor. Sonraki adımda yazıcının modeli seçilerek kurulum tamamlanıyor.



RPi 1'de saatlerce ve farklı şekillerde derlediğim halde varamadığım noktaya, RPi 4'le ortalama on dakika gibi bir sürede geldim. Şimdi tekrar servis konfigürasyonuna geri dönüyorum.


En başta yüklediğim samba, yazıcıyı Windows makinalara paylaştırmak için gerekli. Benim cups.conf'ta bir değişiklik yapmam gerekmedi. Herhangi bir dizin paylaşmayacağım için, smb.conf'ta [homes] bölümünü kapattım (comment out). [printers] ve [print$] bölümlerinde, guest ok = yes olarak ayarladım. testparm -s ile hata var mı diye kontrol edip, systemctl reload smbd komutuyla yeni ayarları yükledim.

DietPi'de bu adımlar biraz farklı. Birincisi CUPS ve samba'nın dietpi-software programıyla yüklenmesi tavsiye ediliyor. İkincisi DietPi'nin özelleştirilmiş bir smb.conf'u var. Default [printers] ve [print$] bölümlerini smb.conf.example dosyasından kopyalamak gerekiyor.

CUPS ile sürücü birbirinden bağımsız. Sürücü yüklü olmasa bile CUPS, yazıcıyı bulup web arayüzünde gösteriyor ve sorunsuz şekilde ekleniyor. Bunun için ilk iş web arayüzünde üst frame'den Administration'ı seçtim. Bu adımda HTTP'den HTTPS'e yönlendirme yapıldığı için tarayıcıda sertifika uyarısı çıkıyor. Bunu geçip lpadmin'e eklediğim kullanıcıyla login oldum. "Find New Printers"a basınca yazıcıyı otomatik buldu. "Add This Printer"a basınca hangi adla ekleyeceğimi soran bir sayfa çıktı. Burada tek önemli konu "Share This Printer"ı seçmek. Sürücü yüklenmişse sonraki sayfada Canon'un model listesi çıkıyor. Bu adım sürücüyü yüklemeden, bağlı yazıcının PPD dosyasını yükleyerek geçilebilir. Canon MF4450 yazıcı için uygun dosya CNRCUPSMF4400ZK.ppd. Bunu, sürücü paketindeki herhangi bir .deb veya .rpm dosyadan makinama açabilirim. Fedora'da bu

rpm2cpio cnrdrvcups-ufr2-uk-6.20-1.20.aarch64.rpm | cpio -idmv

komutuyla yapılabilir. PPD dosyalar yazıcının özelliklerini içeren tanım dosyalarıdır. Platform ve dağıtımdan bağımsızdırlar. Sürücü seçme sayfası aşağıdaki görseldekine çok benzer, fakat ben yazıcıyı eklemiş bulunduğum için "Modify Printer" sayfasının görselini ekledim.


Yazıcıyı ekledikten sonra artık üst frame'in sağında Printers altında listeleniyor. (bu aşamada yazıcıyı silip farklı bir adla tekrar eklemem gerekti, bu nedenle bundan sonraki ekran görüntülerinde yazıcı adı farklı oldu).


Bu yazıcıya tıkladığımda yazıcı ve kuyruk ayarlarının yönetilebildiği sayfa açılıyor (yanda). Burada doğru PPD dosyayı yükleyip yüklemediğime bakacağım. Aynı PPD dosyanın Avrupa ve Amerika sürümünde varsayılan kağıt büyüklükleri farklı (A4 ve Letter). Yanlışlıkla Amerika sürümünü yükleyince yazdırma işi yazıcıya Letter olarak gidiyor ve yazdırmada bir uyarı çıkıyor. Ancak bu ekran görüntüsünden de görüleceği üzere burada doğru ayarlar seçili. Eğer bu ayarlarda Letter seçiliyse, 'Administration' menüsünden 'Set Default Options'ı seçip

çıkan sayfadan kağıt büyüklüğü A4 olarak değiştirilmelidir.


Son olarak ben bu arayüzde Maintenance -> Print Test Page ile bir test çıktısı aldım.


Eğer bu çıktı sorunsuz geliyorsa yazıcı kurulmuştur. İlk denememde sürücüleri kurmadan sadece PPD dosyayı girdiğimde, bu adımda çıktı gelmiyordu ve 'Show All Jobs' butonuna bastığımda rastertoufr2 ile ilgili bir hata veriyordu. Bu hata çıkıyorsa sürücü yüklen(e)memiştir. Normalde bu dosyanın /usr/lib/cups/filter/rastertoufr2 yolunda olması gerekir. Bu adımda artık sürücüyü yüklemekten kaçış yok. Yalnız bu dosyanın çağırılması gerektiği PPD dosyada belirtiliyor. Belki PPD dosyada bu satır değiştirilirerek birşeyler yapılabilir.

Ve son olarak bir ayar daha kaldı: Debian, uzun süre kablosuz ağ kartında bir aktivite görmediği zaman kartı kapatıyor. Bunu engellemek için

nmcli connection mod <SSID> 802-11-wireless.powersave 2

komutunu girmek gerek. Böylece yazıcı yerel ağa açılmış oldu.


Yazıcıyı Windows ve Linux İstemcilere Tanıtmak

Yazıcıyı ağ yazıcısı olarak yerel ağdaki bilgisayarlara tanıtmak gayet kolay. Üstelik itiraf edeyim Windows'ta Fedora'dan daha kolay. Muhtemelen diğer Linux dağıtımlarında da benzer şekildedir ama elimde Fedora olduğundan ben buna yoğunlaşacağım.


Fedora'da yazıcı eklemek için System Settings -> Printers'ı açtım, yukarıdaki '+ Add'e bastım ve ağ yazıcısı kısa sürede bulundu. Burada (aşağıda) 'Select Recommended Driver'a bastığım zaman IPP Everywhere seçiliyor.


Bunu seçerek devam ettim ve sonraki adımda yazıcının nasıl ekleneceğine dair bir ayar ekranı geldi. Burada hiçbir şeyi değiştirmeden devam ettim. Queue Name'in yerel makinaya özgü ve eşsiz (unique) bir ad olması gerek. Description ve Location alanları isteğe göre değiştirilebilir.

Benim sistemimde başka bir yazıcı bulunmadığı için 'Default printer' seçeneğinin bir önemi yok. Bunlar tamamsa 'Add'e basılarak yazıcı eklenir ve yazıcı listesinde bu yazıcının listeleniyor olması gerekir.


Yazıcının üzerine tıklayınca gelen formda 'Print Test Page'e basarak yazıcı test edilebilir.

Windows'ta (v10 ve v11) ayarlardan yazıcıları seçince veya başlat menüsünde Printers yazınca gelen formda, 'Add a printer or scanner' yanındaki 'Add device' butonuna basınca yazıcı otomatik listelendi. Listelenen yazıcının yanındaki 'Add device' butonuna basıldığı zaman, sisteme otomatik ekleniyor ancak bu adım 1-2 dakika kadar sürebiliyor. Muhtemelen bu sırada sürücüler internetten indiriliyor.


Hiç yorum yok:

Yorum Gönder