Ev kullanıcıları için yazıcılara çalıştığınız masada yer ayırmak gerçekten zor iştir. Her zaman ihtiyaç duymadığınız ve en küçüğünün bile yeterince büyük olduğu bir yazıcı için çalıştığınız masada yer ayırmak istemezsiniz. Eğer yeterince şanslıysanız USB kablosunun uzanabildiği yerde uygun bir yer olabilir. Ancak böyle bir alan yoksa Linux yüklü bir OrangePi ile standard yazıcınızı ağ yazıcısına dönüştürüp istediğiniz yerden erişebilirsiniz.
OrangePi modelleri Aliexpress'te 7 dolardan başlayan fiyatlarla bulunuyor. Ben 9 dolar olan 512MB versiyonunu kullandım.
OrangePi'ın kurulumunu ve kablosuz ağa nasıl bağlandığını aşağıdaki yazımda anlatmıştım.
http://cuneyt.aliustaoglu.biz/tr/orange-pi-zero-kurulumu-ve-dinamik-dns-ile-dunyaya-acilmak/
Elimizde SSH ile bağlanabileceğimiz Ubuntu yüklü OrangePi var. Şimdi sıra yazıcımızı buna bağlamak ve ağ üzerinde paylaştırmakta. Bunun için CUPS kullacağız.
OrangePi ile SSH
CUPS (Common UNIX Printing System), Apple'ın geliştirdiği açık kaynak kodlu bir yazıcı yönetim sistemidir diyebiliriz. Sistemimizi hazırlamaya başlayalım:
Öncelikle sistemimizi güncelleyelim ve genel yazıcı sürücülerini yükleyelim. Daha sonra CUPS yazılımını ekleyelim. Burada 2. satırda eklediğimiz yazıcı sürücüleri çoğu yazıcı için çalışacaktır.
sudo apt-get update
sudo apt-get install -y printer-driver-escpr
sudo apt-get install -y cups cups-client cups-common cups-pdf
SSH ile Orange Pi'a bağlandığımız ekran çıktısına bakarsanız 'login as cuneyt' ile bağlandım. Bu kullanıcı Ubuntu kurarken oluşturduğum admin kullanıcısı. Hangi kullanıcıyla bağlanıyorsak bu kullanıcıya CUPS kullanma yetkisini verelim. Daha sonra yönetici paneline uzaktan erişim yetkisi verelim.
usermod -a -G lpadmin cuneyt
sudo cupsctl --remote-any
ve CUPS servisini yeniden başlatalım.
sudo service cups restart
Yukarıdaki usermod adımları aslında cupsd.conf dosyasınının içeriğini değiştiriyor. Eğer elle ayarlıyorsanız aşağıdaki gibi bir yapıda olması gerekiyor. Eğer yukarıdaki komutları kullanıyorsanız aşağıdaki dosya üzerinde herhangi bir değişiklik yapmanıza gerek yok. Sadece referans olması açısından bırakıyorum:
LogLevel warn
PageLogFormat
MaxLogSize 0
# Allow remote access
Port 631
Listen /var/run/cups/cups.sock
Browsing Off
BrowseLocalProtocols dnssd
DefaultAuthType Basic
WebInterface Yes
<Location />
# Allow remote access...
Order allow,deny
Allow all
</Location>
<Location /admin>
</Location>
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
</Location>
<Location /admin/log>
AuthType Default
Require user @SYSTEM
Order allow,deny
</Location>
<Policy default>
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
<Limit Create-Job Print-Job Print-URI Validate-Job>
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Cancel-Job CUPS-Authenticate-Job>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
<Policy authenticated>
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
<Limit Create-Job Print-Job Print-URI Validate-Job>
AuthType Default
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Cancel-Job CUPS-Authenticate-Job>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
Orange Pi'a SSH ile bağlanırken kullandığımız adrese (benim için 192.168.1.70) 631 portu üzerinden bağlanıyoruz ve karşımıza CUPS konsolu çıkıyor.
CUPS konsolu
Daha sonra Administration kısmında OrangePi'a bağladığımız yazıcıyı görüyoruz.
CUPS Yönetici Konsolu
Daha sonra devam ettiğimizde 'Share' seçeneğini dahil etmeyi unutmayalım ve ilerleyelim. Model kısmında ben Generic PCL Laser Printer seçeneğini işaretledim ve hiçbir sıkıntı çıkarmadı.
CUPS Generic PCL Laser Printer
Yazıcımızı verdiğimiz isme bağlı olarak aşağıdaki aşağıdaki gibi bir adresten görüntüleyebiliriz:
Yazıcı kurulumu başarılı
Şimdi sıra geldi son adıma. Başka bir odadaki ya da yazıcıya fiziksel olarak bağlı olmayan herhangi bir bilgisayar üzerinden bu yazıcıya nasıl erişeceğiz? Yukarıdaki şekliyle görüntüleyebildiğiniz sayfanın adresini kopyalayın ve "Yazıcı Ekle" kısmına aynen yapıştırın. (https yerine http kullanmanız gerekebilir)
OrangePi yerine elbette Raspberry Pi da kullanılabilir ancak Raspberry Pi yalnızca yazıcı sunucusu olarak kullanmak için oldukça pahalı bence. Ancak halihazırda web sunucusu ya da başka bir amaçlı kullanıyorsanız ekstra bir görev daha ekleyebilirsiniz.