Przejdź do głównej zawartości

RaspberryPi: serwer wydruku.

I to by było na tyle - więcej pisać nie trzeba, bo też i filozofii specjalnie w tym nie ma... Ale jakby ktoś potrzebował, służę uprzejmie.

Od jakiegoś czasu zastanawiam się nad zakupem serwera wydruku, nawet mógłby pracować z drukarką wyposażoną w łącze równoległe (moja akurat ma i USB i Centronicsa), niestety ciągle blokuje mnie cena - jak na niewielki stopień komplikacji i niezbyt zaawansowaną technologię ciągle za wysoka, nawet w przypadku printserverów LAN-owskich. Wczoraj, grzebiąc bezmyślnie w internetach, natknąłem się na artykuł poświęcony malinie i gdzieś na początku przeczytałem, że ludzie robią z RaspberryPi przeróżne ustrojstwa, w tym centra multimedialne, serwery wydruku... I tu dostałem nagłej eureki... Przecież malina u mnie się ostatnio nudzi, a drukarkę udostępniam laptopowi żony przez komputer stacjonarny, który musi być włączony itd., a jest to - jak na porządną stacjonarkę przystało - kobyła i bomba energetyczna... A RaspberryPi, zasilany z zasilacza impulsowego, żrącego niewiele energii, sprawdziłby się w roli serwera wydruku wręcz doskonale.
Oto, co zrobiłem.
Na początku zaktualizowałem Raspbiana:

sudo apt-get update 
sudo apt-get upgrade

następnie zainstalowałem pakiet oprogramowania CUPS:

sudo apt-get install cups

Razem z pakietem zasadniczym pociągnęło się oczywiście wiele innych, potrzebnych i szalenie ważnych. CUPS to oprogramowanie dostarczające systemom uniksowym funkcjonalność drukowania, współdzielenia i udostępniania drukarek w sieci. Dodatkowo mamy możliwość administrowania drukarkami czy kolejką wydruku przez przeglądarkę WWW. Aż dziw bierze, że takie cudo tworzy głównie firma ogrodnicza...

Po zainstalowaniu pakietu trzeba jeszcze, dla wygody, dodać swojego usera do grupy administratorów wydruku:

sudo usermod -a -G lpadmin nazwa_użytkownika

i - żeby dać sobie możliwość zarządzania drukarkami z innych komputerów w sieci (przez przeglądarkę właśnie), należy nieco zmienić plik konfiguracyjny /etc/cups/cupsd.conf. Mój plik konfiguracyjny na malinie wygląda tak (pogrubiłem linie dopisane lub zmienione przeze mnie):

#
# "$Id: cupsd.conf.in 9407 2010-12-09 21:24:51Z mike $"
#
# Sample configuration file for the CUPS scheduler.  See "man cupsd.conf" for a
# complete description of this file.
#

# Log general information in error_log - change "warn" to "debug"
# for troubleshooting...
LogLevel warn

# Deactivate CUPS' internal logrotating, as we provide a better one, especially
# LogLevel debug2 gets usable now
MaxLogSize 0

# Only listen for connections from the local machine.
Port 631
#Listen localhost:631
Listen /var/run/cups/cups.sock

# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseLocalProtocols CUPS dnssd

# Default authentication type, when authentication is required...
DefaultAuthType Basic

# Web interface setting...
WebInterface Yes

# Restrict access to the server...

  Order allow,deny
  Allow all

# Restrict access to the admin pages...

  Order allow,deny
  Allow all

# Restrict access to configuration files...

  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow all

# Set the default printer/job policies...

  # Job/subscription privacy...
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default

  # Job-related operations must be done by the owner or an administrator...
 
    Order deny,allow

    Require user @OWNER @SYSTEM
    Order deny,allow

  # All administration operations require an administrator to authenticate...
 
    AuthType Default
    Require user @SYSTEM
    Order deny,allow

  # All printer operations require a printer operator to authenticate...
 
    AuthType Default
    Require user @SYSTEM
    Order deny,allow

  # Only the owner or an administrator can cancel or authenticate a job...
 
    Require user @OWNER @SYSTEM
    Order deny,allow
 
    Order deny,allow

# Set the authenticated printer/job policies...

  # Job/subscription privacy...
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default

  # Job-related operations must be done by the owner or an administrator...
 
    AuthType Default
    Order deny,allow
 
    AuthType Default
    Require user @OWNER @SYSTEM
    Order deny,allow

  # All administration operations require an administrator to authenticate...
 
    AuthType Default
    Require user @SYSTEM
    Order deny,allow

  # All printer operations require a printer operator to authenticate...
 
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
 
  # Only the owner or an administrator can cancel or authenticate a job...
 
    AuthType Default
    Require user @OWNER @SYSTEM
    Order deny,allow
 
    Order deny,allow
 
#
# End of "$Id: cupsd.conf.in 9407 2010-12-09 21:24:51Z mike $".
#

W repozytoriach Raspbiana znajduje się wersja 1.5.3 pakietu CUPS (to dla jasności, gdyby były jakieś niezgodności co do zawartości pliku konfiguracyjnego). Załączyłem plik w całości, żeby można było go sobie po prostu skopiować i wkleić, bez grzebania i dopisywania.

Po zmianie pliku konfiguracyjnego przestrzeliwujemy usługę:

sudo service cups restart

i z poziomu przeglądarki wchodzimy na adres:

http://adres_ip_mailny:631

Interfejs jest szalenie prosty i intuicyjny, więc zakładam, że każdy poradzi sobie ze skonfigurowaniem swojej drukarki - jednak przed tą czynnością należy drukarkę podłączyć do RPi i włączyć jej zasilanie :). CUPS znajdzie zapewne kilka różnych drukarek (to ze względu na zainstalowane sterowniki), jednak wybrać musimy tę fizyczną, przez nas posiadaną - to oczywiste.
Po skonfigurowaniu drukarki jako współdzielonej i udostępnianej, możemy na dowolnej platformie systemowej (Linux, Windows, MacOS itp.) wybrać/dodać sobie serwowaną przez malinę drukarkę sieciową, używając adresu:

http://adres_ip_maliny:631/printers/nazwa_drukarki

np. w moim przypadku wygląda to tak:

http://192.168.1.2:631/printers/Samsung_ML-2010

I to wszystko! Sprawdźmy jeszcze - choćby za pomocą rcconf - czy CUPS jest uruchamiany automatycznie z systemem i serwer wydruku gotowy.
Rozwiązanie działa niezależnie od tego, czy używamy sieci LAN, czy WiFi.

Komentarze

Popularne posty z tego bloga

Niesamowicie prosty czujnik zmierzchowy.

Tym razem zero programowania, będzie natomiast nostalgiczno-wspomnieniowy układzik, lekko zmodyfikowany. Otóż kilka dni temu rozmawialiśmy w gronie znajomych o różnego rodzaju czujnikach zmierzchowych i czujnikach ruchu. Ponieważ należę do tych wariatów, co to hołdują jeszcze owej przestarzałej i kompletnie odrealnionej dziś zasadzie: "po co kupować, gdy można zrobić", stwierdziłem, że poskładam takie coś (czujnik zmierzchowy; sensor ruchu faktycznie lepiej nabyć, choćby ze względu na rozmiary ;)) i być może podłączę do jakiegoś mikrokontrolera. Przypomniało mi się też przy okazji, że znalazłem ostatnio w elektronicznych śmieciach stary fotorezystor (dla niewtajemniczonych: element zmieniający rezystancję, czyli opór elektryczny, pod wpływem działania strumienia światła) RPP130, jeden z kilku pozostałych po montowanych wieki temu układach tranzystorowych do zdalnego sterowania pracą urządzeń za pomocą latarki... No OK, nie było to specjalnie rozbudowane zdalne sterowanie ;)

Płytka prototypowa na bazie ESP8266 (ESP-01)

To nie jest kolejny artykuł traktujący od początku do... nieco dalej (bo na pewno nie do końca) o płytkach ESP8266 . Żeby się dowiedzieć, co to takiego, odwiedźcie proszę np. tę stronę (oraz wiele innych – poproście o pomoc Waszą ulubioną wyszukiwarkę): http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family . No ale żeby nie było, ESP8266 to układ zawierający na pokładzie wydajny mikrokontroler z rdzeniem RISC-owym, taktowany zegarem 40MHz (wersja, o której jest ten wpis) lub 80MHz, 512KB pamięci flash i podsystem komunikacji przez sieć WiFi . Jest powszechnie wykorzystywany jako swego rodzaju karta sieciowa do połączeń bezprzewodowych naszych urządzeń IoT , które budujemy w zaciszu domowych laboratoriów (i nie tylko). Układ montowany jest na płytkach występujących w kilku wersjach, różniących się przede wszystkim liczbą wyprowadzeń uniwersalnych, czyli GPIO – im większa liczba, tym większe możliwości wykorzystania układu (więcej urządzeń peryferyjnych itp.). Są też pewne

Programowanie AVR cz.8: Przetwornik analogowo-cyfrowy oraz modulacja szerokości impulsu.

Dziś kolejny wgląd w wyposażenie mikrokontrolera ATmega48P - tym razem przyglądamy się wbudowanemu w układ przetwornikowi analogowo-cyfrowemu oraz - dostępnej również w modelach ATtiny - modulacji szerokości impulsu realizowanej przez timery. Artykuł ten jest w pewnym sensie wstępem do następnego, który pojawi się już wkrótce, a którego tematykę zdradziłem na końcu. Przetwornik A-C (skrót spotykany w anglojęzycznej literaturze to ADC od Analog to Digital Converter ) to układ pozwalający na zamianę wartości napięcia (elektrycznego sygnału analogowego ;-)) na liczbę. W przypadku mojej ATmegi przetwornik ma rozdzielczość 10-bitową, co oznacza, że wartość napięcia podawanego na wejście przetwornika może być po konwersji zapisana jako liczba z przedziału od 0 do 1023 (musimy użyć zmiennej word do zapamiętania tej liczby). Jeśli jesteśmy w posiadaniu mikrokontrolera w obudowie PDIP 28-wyprowadzeniowej, to mamy do dyspozycji sześć kanałów (niezależnych wejść) przetwornika A-C, przyporzą