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.

Orange Pi ile SSH 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 CUPS konsolu

Daha sonra Administration kısmında OrangePi'a bağladığımız yazıcıyı görüyoruz.

CUPS Yönetici Konsolu 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 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ı 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)

Windows 10 için

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.