Drukowanie poprzez WiFi z użyciem dowolnej drukarki USB (a nawet LPT)

W zasadzie cały tutorial mógłby być wyrażony w następujących dwóch zdaniach:

„Kup Raspberry Pi, znajdź odpowiednie kable i ładowarkę USB (może być najprostsza 5 V / 2 A), zainstaluj Linuksa, zainstaluj CUPS, zainstaluj sterowniki drukarki, skonfiguruj CUPS, dodaj drukarkę w Windows, ciesz się drukowaniem bezprzewodowym. W przypadku każdego z etapów znajdziesz wsparcie na YouTube oraz wspomoże Cię ChatGPT.”

Postaram się jednak trochę rozwinąć temat, ponieważ jest tego wart, a funkcjonalność drukowania za pomocą sieci bezprzewodowej na zwykłej drukarce USB jest szalenie użyteczna i pozwala tchnąć nowe życie nawet w leciwy sprzęt.


Co jest nam potrzebne – sprzęt do zbudowania prostego print-serwera CUPS na Raspberry Pi

Poniżej lista kompletnego wyposażenia, żeby uruchomić Raspberry Pi jako serwer druku działający w sieci lokalnej. To jest minimalny zestaw, którego faktycznie używa się w praktyce – bez rzeczy zbędnych, ale z opcjonalnymi elementami, które czasem ratują sytuację przy pierwszej konfiguracji.

1. Drukarka USB

Ja użyłem Brother HL-L2402D oraz HP 6P, ale dowolna drukarka USB będzie OK.

  • ważne, żeby miała zwykłe USB-B (większość drukarek ma),
  • jeżeli jest wyposażona tylko w LPT, to trzeba użyć konwertera USB–LPT dedykowanego do drukarek,
  • w przypadku Brotherów warto od razu założyć konieczność instalacji sterownika brlaser,
  • w przypadku HP 6P dodatkowe sterowniki w CUPS nie były potrzebne.

2. Raspberry Pi (dowolny model, ja użyłem Zero 2 W)

Raspberry Pi Zero 2 W jest bardzo sensownym wyborem do takich prostych projektów: ma małe wymiary i jest oszczędne energetycznie. Można użyć też Pi 3/4.

Do Zero 2 W będą potrzebne dodatkowo:

  • przejściówka microUSB → USB OTG,
  • karta microSD (8–32 GB w zupełności wystarczy).

Pierwsza moja przymiarka do drukowania bezprzewodowego odbyła się z użyciem starszego Raspberry Pi Zero W – to również działało, ale system uruchamiał się jakieś 60 sekund, podczas gdy uruchomienie systemu na Zero 2 W trwa około 25 sekund. Cena nowszej wersji jest w zasadzie identyczna jak starej, więc nie ma sensu skazywać się na niską wydajność i niepotrzebną zwłokę. Co więcej, kartę pamięci skonfigurowaną dla starego Zero można później przełożyć do nowego i system uruchomi się poprawnie (tak właśnie zrobiłem).

3. Okablowanie USB (host → drukarka)

  • adapter OTG microUSB → USB-A (Zero 2 W nie ma pełnego portu USB host),
  • kabel USB-B ↔ USB-A do drukarki (standardowy kabel drukarkowy).

4. Zasilanie Raspberry Pi

  • zasilacz 5 V, 1.5–2 A w zupełności wystarcza dla Zero 2 W,
  • może to być ładowarka USB dobrej jakości + kabel microUSB.

Ważne: Zero 2 W nie ma zabezpieczeń na liniach zasilania, dlatego nie należy używać przypadkowych, najtańszych kabli ani zasilaczy.

5. Karta microSD + Raspberry Pi Imager

  • karta najlepiej Class 10,
  • do nagrania obrazu systemu użyjesz programu Raspberry Pi Imager.

6. (Opcjonalnie) Mini HDMI → HDMI

  • tylko jeśli chcesz uruchomić Pi z monitorem,
  • Zero 2 W ma miniHDMI (dokładniej: miniHDMI typ C), więc potrzebny jest adapter albo kabel miniHDMI–HDMI.

7. (Opcjonalnie) Klawiatura USB

  • przydatna, jeśli konfiguracja SSH lub Wi-Fi nie pójdzie bezboleśnie – mi się zdarzyło,
  • można użyć także klawiatury Bluetooth po pierwszym uruchomieniu.

8. (Opcjonalnie) Dioda LED + rezystor 330–1 kΩ

Wygodne usprawnienie, informuje o gotowości pracy po załączeniu zasilania (opisuję je w osobnym rozdziale).

9. Dostęp do sieci Wi-Fi z hasłem

Przy konfiguracji headless (bez monitora i klawiatury) potrzebny będzie plik wpa_supplicant.conf lub network-config na partycji BOOT.

Jeśli sieć zmienia się często, warto znać tryb gadget-mode, ale to temat osobny.

10. Komputer (Windows / Linux / macOS)

Potrzebny do:

  • nagrania systemu na kartę,
  • pierwszej konfiguracji Wi-Fi / SSH,
  • testów druku z Windows.

1. Przygotowanie Raspberry Pi – instalacja systemu i konfiguracja headless (Wi-Fi + SSH)

Celem tego etapu jest przygotowanie karty SD tak, aby Raspberry Pi Zero 2 W uruchomiło się bez monitora i klawiatury, od razu z dostępem do Wi-Fi i SSH. To pozwala przejść całą konfigurację CUPS zdalnie.

Krok 1: Pobranie Raspberry Pi Imager

Oficjalny program do nagrywania systemu:

https://www.raspberrypi.com/software

Po instalacji wybierasz:

  • „Choose OS” → „Raspberry Pi OS (32-bit)”
    (wersja bez Desktop, bo CUPS nie potrzebuje grafiki),
  • „Choose Storage” → Twoja karta microSD.

Krok 2: Ustawienia zaawansowane (ważne)

W Raspberry Pi Imager naciśnij ikonkę koła zębatego na dole, po prawej stronie → pojawi się okno zaawansowanych ustawień.

Włącz:

  • „Set hostname” – np. raspberrypi,
  • „Enable SSH” → wybierz „Allow password authentication”,
  • „Set username and password” – np.
    • username: nazwa_uzytkownika
    • password: sensowne hasło,
  • „Configure Wi-Fi” –
    • SSID: nazwa Twojej sieci Wi-Fi,
    • Password: hasło,
    • Wi-Fi country: PL,
  • „Locale settings” – ustaw czas, klawiaturę i region.

Zatwierdzasz przyciskiem „Save”.

Uwaga praktyczna: czasem Imager nie włącza SSH poprawnie (mi się tak zdarzyło), dlatego dokładamy dodatkowy mechanizm w kolejnym kroku.

Krok 3 (opcjonalnie, ale pewniej): pliki ssh i wpa_supplicant.conf

Po nagraniu obrazu systemu komputer pokaże partycję boot (FAT32).
Możesz tam dorzucić dwa pliki, które działają zawsze, niezależnie od wersji systemu.

– Plik ssh (pusty):

Na partycji BOOT utwórz plik o nazwie:

ssh

Bez rozszerzenia, bez zawartości.

Powoduje to gwarantowane włączenie SSH przy starcie systemu.

– Plik wpa_supplicant.conf:

Zawartość:

country=PL
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="NAZWA_TWOJEJ_SIECI"
    psk="HASLO_DO_WIFI"
}

Raspberry Pi skopiuje ten plik do /etc/wpa_supplicant/ i po starcie połączy się z Wi-Fi.

Krok 4: Pierwsze uruchomienie Raspberry Pi Zero 2 W

Włóż kartę microSD i podłącz zasilanie.

Zero 2 W nie ma osobnej LED statusowej poza diodą zasilania, więc po prostu czekasz około 25–30 sekund. W tym czasie system:

  • uruchomi się,
  • połączy się z siecią,
  • włączy SSH,
  • nada hostname.

Krok 5: Logowanie po SSH (PuTTY lub terminal)

Po prawidłowym uruchomieniu Raspberry Pi i połączeniu go z siecią możesz zalogować się zdalnie. To jest moment, w którym sprawdzamy, czy konfiguracja Wi-Fi i SSH zadziałała.

Masz dwie metody zależnie od systemu, z jakiego korzystasz.

Metoda A: logowanie za pomocą PuTTY (Windows)

  1. Pobierz PuTTY: https://www.putty.org/
  2. Uruchom program i w polu „Host Name” wpisz: raspberrypi.local Jeśli sieć nie wspiera mDNS → wpisz adres IP z routera, np. 192.168.1.42.
  3. Port: 22, typ połączenia: SSH.
  4. Kliknij „Open”.
  5. Przy pierwszym połączeniu zaakceptuj klucz serwera (komunikat „trust this host”).
  6. Wpisz nazwę użytkownika, np.: nazwa_uzytkownika
  7. Wpisz hasło (PuTTY nie pokazuje gwiazdek – to normalne).

Po zalogowaniu znajdziesz się w konsoli Raspberry Pi i możesz zarządzać systemem tak jak lokalnie.

Metoda B: logowanie z terminala Linux / macOS

W systemach uniksowych możesz po prostu:

ssh nazwa_uzytkownika@raspberrypi.local

lub użyć adresu IP:

ssh nazwa_uzytkownika@192.168.1.42

Jeśli połączenie nie działa, najczęstsze przyczyny to:

  • Pi nie podłączyło się do sieci Wi-Fi (błąd w SSID/haśle, region nie PL),
  • router blokuje mDNS → wtedy użyj adresu IP zamiast raspberrypi.local,
  • SSH nie aktywowało się z ustawień Imagera → dlatego dodawaliśmy plik ssh na BOOT,
  • Pi nie dostało adresu DHCP – pomaga restart routera.

Krok 6: Aktualizacja systemu

Po wejściu przez SSH:

sudo apt update
sudo apt full-upgrade -y
sudo reboot

Po restarcie możesz już kontynuować konfigurację CUPS.


2. Instalacja i konfiguracja CUPS na Raspberry Pi (w tym udostępnianie w sieci LAN)

W tym kroku uruchomimy CUPS, poprawnie udostępnimy drukarkę w sieci oraz zadbamy o konfigurację tak, żeby Windows ją widział i używał właściwego sterownika. Ten etap bywa mylący, jeśli nie zna się kilku pułapek charakterystycznych dla Raspberry Pi OS i samego CUPS.

Krok 1: Instalacja CUPS

Na Raspberry Pi (przez SSH):

sudo apt install cups

Po instalacji CUPS pracuje jako usługa systemd i jest aktywowany przez socket (startuje automatycznie, kiedy ktoś otwiera port 631).

Sprawdzenie statusu:

systemctl status cups
systemctl status cups.socket

Obie usługi powinny być w stanie „active”.

Krok 2: Dodanie użytkownika do grupy lpadmin

Bez tego nie będziesz mógł zarządzać drukarkami:

sudo usermod -aG lpadmin nazwa_uzytkownika

Wyloguj się / zaloguj ponownie, aby grupa zaczęła działać.

Krok 3: Umożliwienie dostępu do panelu CUPS z sieci lokalnej

Domyślnie CUPS pozwala tylko na połączenia z localhost. Musimy to zmienić w pliku konfiguracyjnym.

Edytuj:

sudo nano /etc/cups/cupsd.conf

Znajdź sekcje:

<Location />
    ...
</Location>

<Location /admin>
    ...
</Location>

<Location /admin/conf>
    ...
</Location>

I upewnij się, że zawierają:

Allow @LOCAL

Przykład minimalny:

<Location />
  Order allow,deny
  Allow @LOCAL
</Location>

<Location /admin>
  Order allow,deny
  Allow @LOCAL
</Location>

<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow @LOCAL
</Location>

To sprawia, że panel CUPS będzie dostępny pod adresem:

http://raspberrypi.local:631

lub:

http://IP_RASPBERRY:631

Krok 4: Restart CUPS po zmianach

sudo systemctl restart cups

Jeśli konfiguracja jest błędna, CUPS będzie miał status „failed”.
Wtedy warto użyć:

journalctl -xeu cups

Krok 5: Podłączenie drukarki i instalacja właściwego sterownika

  1. Podłącz drukarkę USB do Raspberry Pi przez adapter OTG.
  2. Upewnij się, że system ją widzi: lsusb Dla Brotherów powinno pojawić się coś w stylu: Bus 001 Device 004: ID 04f9:006e Brother Industries, Ltd

Instalacja sterownika dla Brothera (brlaser)

Dla wielu modeli Brother (HL-L24xx itp.) konieczny jest sterownik brlaser:

sudo apt install printer-driver-brlaser

CUPS bez tego pokaże drukarkę jako „Generic IPP” i będzie produkował puste kartki.

Krok 6: Dodawanie drukarki przez interfejs CUPS

Otwórz w przeglądarce:

http://raspberrypi.local:631

lub IP urządzenia.

Wybierz:

  • „Administration” → „Add Printer”.

Drukarka USB powinna pojawić się na liście jako np.:

Brother HL-L2402D (USB)

Wybierz ją i przejdź dalej.

Przy wyborze sterownika wybierz:

  • producent: Brother,
  • sterownik: jeden z wariantów brlaser (np. HL-L2300D (brlaser)).

Po zapisaniu drukarka będzie widoczna w:

  • „Printers” → [NazwaTwojejDrukarki].

Krok 7: Udostępnienie drukarki w sieci

W panelu CUPS wejdź:

  • „Printers” → Twoja drukarka → „Administration” → „Share This Printer”.

Zaznacz i zatwierdź.

CUPS wygeneruje wpis w:

/etc/cups/printers.conf

Przykładowy fragment:

<Printer Brother_HL-L2402D>
  Shared Yes
  Accepting Yes
  ...
</Printer>

Uwaga: jeśli Shared Yes nie zapisze się prawidłowo, Windows nie będzie widział drukarki, mimo że panel CUPS ją pokazuje. To jeden z najczęstszych problemów.

Krok 8: Sprawdzenie udostępnienia drukarki

W tym momencie Windows powinien wykrywać drukarkę jako:

HL-L2402D @ raspberrypi

Jeśli pojawia się, ale drukuje puste kartki → prawdopodobnie nadal jest zły sterownik.
Jeśli nie pojawia się w ogóle → sprawdź Allow @LOCAL w cupsd.conf.


3. Dodawanie drukarki w Windows + typowe problemy i ich rozwiązania

W tym kroku podłączymy drukarkę sieciową udostępnioną przez CUPS do systemu Windows.
Wbrew pozorom to nie zawsze działa „od strzału”, szczególnie jeśli sterownik CUPS był ustawiony jako „Generic IPP” — wtedy drukarka przesyła do Raspberry Pi poprawne zadania, ale Raspberry Pi nie potrafi ich przełożyć na język właściwy dla modelu Brother i drukuje puste kartki.

Krok 1: Upewnij się, że CUPS poprawnie udostępnia drukarkę

W przeglądarce:

http://raspberrypi.local:631/printers

Powinieneś zobaczyć coś takiego:

Brother_HL-L2402D
Status: Idle
Shared: Yes

Jeśli pole „Shared” mówi „No” → wróć do poprzedniego etapu i ustaw „Share This Printer”.

Krok 2: Automatyczne wykrywanie drukarki (mDNS / IPP)

W Windows 10 / 11:

  • „Settings” → „Devices” → „Printers & Scanners” → „Add a printer”.

Po kilku sekundach powinna pojawić się drukarka:

HL-L2402D @ raspberrypi

Jeśli ją widzisz — kliknij i dodaj.

Uwaga: Windows instaluje swoje sterowniki, a nie to, co jest w CUPS – i to jest prawidłowe.
Windows komunikuje się z Raspberry Pi przez IPP:

  • wysyła surowe polecenia do CUPS,
  • CUPS przekłada je na język Brothera (przez brlaser).

Dlatego instalowanie sterownika Brothera na Windowsie jest opcjonalne — ważne jest tylko, aby CUPS miał prawidłowy sterownik.

Krok 3: Jeśli Windows nie widzi drukarki automatycznie

Najczęstsza przyczyna: w CUPS brakuje Allow @LOCAL w cupsd.conf, albo CUPS nie pracuje poprawnie na interfejsie sieciowym Zero 2 W.

Sprawdź w /etc/cups/cupsd.conf sekcje:

<Location />
<Location /admin>
<Location /admin/conf>

Każda musi mieć:

Allow @LOCAL

Po poprawkach:

sudo systemctl restart cups

Windows zwykle zaczyna widzieć drukarkę po 5–15 sekundach.

Krok 4: Ręczne dodawanie drukarki po adresie IPP

Jeśli automatyczne wykrywanie nie działa, można dodać ją ręcznie.

W Windows:

  • „Add printer” → „The printer that I want isn’t listed” → „Add a printer using a TCP/IP address or hostname”.

Ustaw:

  • Device type: „Web Services Device” (IPP Printer),
  • Hostname/IP: http://raspberrypi.local:631/printers/Brother_HL-L2402D lub adres IP, np.: http://192.168.1.20:631/printers/Brother_HL-L2402D

Windows sam wykryje typ IPP i doda port WSD lub IPP.

Jeśli Windows pyta o sterownik → wybierz cokolwiek z listy (np. „Generic”).
To i tak nie ma znaczenia, bo faktyczny sterownik jest w CUPS.

Krok 5: Problem – drukarka drukuje puste kartki

To klasyczny objaw złego sterownika w CUPS:

  • CUPS pokazuje drukarkę jako „Generic IPP”,
  • Windows wysyła zadania normalnie, ale CUPS nie wie, jak je przetworzyć → drukarka dostaje pustą stronę.

Rozwiązanie: zainstalować sterownik brlaser:

sudo apt install printer-driver-brlaser

Następnie w panelu CUPS:

  • „Printers” → „Brother HL-L2402D” → „Administration” → „Modify Printer”

i wybrać sterownik brlaser (np. HL-L2300D (brlaser)).

Po zapisaniu zmiany drukowanie z Windows zacznie działać prawidłowo.

Krok 6: Problem – drukarka jest widoczna, ale Windows nie drukuje

Najczęstsze przyczyny:

  1. Windows dodał niepoprawny port. Wejdź:
    • „Control Panel” → „Devices and Printers” → PPM na drukarce → „Printer Properties” → zakładka „Ports”.
    Sprawdź, czy port ma formę: http://raspberrypi.local:631/printers/Brother_HL-L2402D lub: http://192.168.1.xx:631/printers/Brother_HL-L2402D Jeśli jest port typu LPR bez nazwy kolejki, albo RAW → skasuj drukarkę i dodaj ponownie przez IPP.
  2. CUPS nie udostępnia drukarki z powodu błędnego printers.conf. Czasem CUPS zapisuje udostępnianie drukarki dopiero po restarcie. Sprawdź: cat /etc/cups/printers.conf Powinno być: <Printer Brother_HL-L2402D> Shared Yes State Idle ... </Printer> Jeżeli Shared No → zmiana w panelu się nie zapisała.
    Typowo oznacza to brak Allow @LOCAL w /etc/cups/cupsd.conf.

Krok 7: Test działania

Najpierw test z CUPS:

  • „Printers” → „Brother HL-L2402D” → „Maintenance” → „Print Test Page”.

Jeżeli działa – przejdź do Windowsa i wydrukuj stronę testową.


4. Użyteczny bonus: sygnalizacja stanu serwera druku za pomocą diody LED (GPIO6)

To rozwiązanie pozwala ocenić „na oko”, czy Raspberry Pi działa i czy CUPS jest już gotowy do przyjmowania zadań drukowania. Idealne, jeśli Raspberry pracuje sobie schowane gdzieś w obudowie drukarki lub w szafce sieciowej.

Dioda LED informuje o stanie systemu:

  • brak świecenia – CUPS jeszcze się nie uruchomił, Raspberry wraz z drukarką zostało podłączone do prądu i właśnie się uruchamia,
  • ciągłe świecenie – CUPS działa, drukarka jest gotowa do pracy.
  • dioda miga – dokument do wydruku jest właśnie przesyłany do drukarki.

W tej wersji korzystamy z GPIO6, bo wówczas łatwo jest przylutować LED.

Krok 1: Podłączenie diody LED do GPIO6

Potrzebujesz:

  • dowolnej diody LED (np. 3 mm),
  • rezystora 330–1000 Ω,
  • przewodów.

Schemat połączeń (tak jak u mnie):

  • GPIO6 (pin 31) → rezystor → GPIO12 (pin 32) użyty tylko jako pole lutownicze → dioda LED → GND (pin 34).

Katoda LED (po lewej stronie, ścięcie na obudowie, krótsza nóżka) do masy, anoda LED (po prawej stronie, dłuższa nóżka) do rezystora.

GPIO w Raspberry pracuje na 3.3 V, więc rezystor jest obowiązkowy. U mnie katoda LED przylutowana jest do pinu GND, a anoda do GPIO 12, przy czym pin ten służy jedynie jako pole lutownicze. Tak naprawdę sterowanie odbywa się z pinu GPIO 6 przez rezystor 330 Ω.

Krok 2: Instalacja narzędzia gpioset

W Raspberry Pi OS Bookworm narzędzie jest dostarczane przez pakiet gpiod:

sudo apt install gpiod

W tej wersji poprawnie działa tryb:

gpioset -t 0 GPIO6=1

co oznacza „ustaw 1 i natychmiast zakończ” — to jest kluczowe, bo bez tego gpioset trzyma linię i blokuje możliwość zmiany stanu.

Krok 3: Skrypt monitorujący stan CUPS

Utwórz plik:

sudo nano /usr/local/bin/led-status.sh

Wklej zawartość:

#!/bin/bash

PIN="GPIO6"
GPIOSET="/usr/bin/gpioset"

led_on() {
    $GPIOSET -t 0 "$PIN=1"
}

led_off() {
    $GPIOSET -t 0 "$PIN=0"
}

cups_is_active() {
    systemctl is-active --quiet cups.service
}

any_printer_has_jobs() {
    local printers
    printers=$(lpstat -p 2>/dev/null | awk '{print $2}')

    for pr in $printers; do
        if lpstat -o "$pr" 2>/dev/null | grep -q .; then
            return 0    # TAK, jest jakieś zadanie
        fi
    done

    return 1    # BRAK zadań w wszystkich kolejkach
}

# Start — zgaś diodę
led_off

while true; do
    if ! cups_is_active; then
        # CUPS nie działa → LED OFF
        led_off
        sleep 0.1
        continue
    fi

    if any_printer_has_jobs; then
        # Miga, jeśli są zadania
        led_on
        sleep 0.2
        led_off
        sleep 0.2
    else
        # Świeci ciągle, jeśli kolejki puste
        led_on
        sleep 0.1
    fi
done

Zapisz:

  • Ctrl + O → Enter → Ctrl + X.

Nadaj prawa wykonywania:

sudo chmod +x /usr/local/bin/led-status.sh
sudo sed -i 's/\r$//' /usr/local/bin/led-status.sh

(ostatnia linia usuwa CRLF, jeśli skrypt edytowałbyś kiedyś pod Windowsem).

Krok 4: Jednostka systemowa systemd

Utwórz:

sudo nano /etc/systemd/system/led-status.service

Wstaw:

[Unit]
Description=LED status indicator for CUPS on GPIO6
After=multi-user.target
Requires=cups.service

[Service]
Type=simple
ExecStart=/usr/local/bin/led-status.sh
Restart=always

[Install]
WantedBy=multi-user.target

Zapisz i aktywuj:

sudo systemctl daemon-reload
sudo systemctl enable led-status.service
sudo systemctl start led-status.service

Krok 5: Test działania

Zrestartuj Raspberry poprzez odłączenie zasilania albo komendą:

sudo reboot
  • Podczas uruchamiania Raspberry, LED powinna pozostać wygaszona, a po jakichś 20…30 sekundach zaświeci się sygnalizując gotowość do drukowania.
  • Podczas wysyłynia dokumentu do drukarki – LED powinna migać.
  • Wysłanie poniższej komendy spowoduje krótkie wyłączenie i załączenie LED.
sudo systemctl restart cups.socket cups.service

Dlaczego to działa poprawnie?

  • używamy gpioset -t 0, które ustawia stan pinu bez trzymania go procesem,
  • systemd odpala skrypt po starcie systemu i monitoruje jego pracę,
  • LED jest dokładnym odzwierciedleniem stanu usługi cups.service.

To daje elegancką technicznie i wygodną dla użytkownika sygnalizację statusu CUPS.


5. „Troubleshooting” — praktyczne rozwiązania najczęstszych problemów (Wi-Fi, SSH, CUPS, Windows, GPIO)

Ten rozdział jest po to, abyś nie musiał wracać do monitora i klawiatury za każdym razem, kiedy coś pójdzie nie tak. Z mojego doświadczenia z Raspberry Pi Zero 2 W (oraz z tego projektu) wynika, że najczęstsze problemy są powtarzalne i mają szybkie rozwiązania — trzeba tylko wiedzieć, gdzie patrzeć.

5.1. Problem: Raspberry Pi nie łączy się z nową siecią Wi-Fi

Przyczyna: stary wpa_supplicant.conf lub błędny region Wi-Fi.

Rozwiązanie 1 – edycja pliku na karcie SD (bez monitora)

  • wyjmij kartę z Raspberry Pi,
  • w komputerze otwórz partycję boot (FAT32),
  • skasuj stary wpa_supplicant.conf, jeśli istnieje,
  • dodaj nowy plik wpa_supplicant.conf z treścią: country=PL ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="NOWA_SIEC" psk="NOWE_HASLO" }

Raspberry Pi skopiuje ten plik przy starcie.

Rozwiązanie 2 – poprzez SSH-over-USB (gadget mode)

Jeśli Wi-Fi nie działa, ale Pi się uruchamia:

  • podłącz kablem microUSB ↔ PC do portu USB „data” (nie power),
  • Pi zgłosi się jako karta sieciowa (Ethernet gadget),
  • wtedy możesz wejść przez SSH i zmienić Wi-Fi: sudo raspi-config nonint do_wifi_ssid_passphrase "NAZWA" "HASLO"

5.2. Problem: SSH nie działa, mimo ustawienia w Raspberry Pi Imager

Przyczyna: Imager nie zapisuje poprawnie ustawień, albo system wymusza pierwszy login lokalny.

Rozwiązanie – metoda pewna:

Na partycji boot utwórz plik:

ssh

Pusty, bez rozszerzenia.
Ten mechanizm działa zawsze i nie wymaga żadnych dodatkowych usług.

5.3. Problem: CUPS nie jest dostępny w przeglądarce („Access Forbidden”)

Przyczyna: brak Allow @LOCAL w trzech lokacjach w cupsd.conf.
Najczęściej brakuje w sekcji /admin/conf.

Rozwiązanie:

Edytuj:

sudo nano /etc/cups/cupsd.conf

Dodaj we wszystkich sekcjach:

Allow @LOCAL

Restart:

sudo systemctl restart cups

5.4. Problem: drukarka widoczna w Windows, ale drukuje puste strony

Przyczyna: CUPS używa sterownika „Generic IPP”, więc nie potrafi przełożyć danych na język konkretnej drukarki.

Rozwiązanie:

Zainstalować sterownik:

sudo apt install printer-driver-brlaser

A następnie:

  • „CUPS → Printers → Twoja drukarka → Administration → Modify Printer”
  • wybrać sterownik brlaser.

5.5. Problem: drukarka nie pojawia się w Windows, mimo że działa w CUPS

Przyczyna: drukarka nie jest faktycznie „Shared” w CUPS.
Panel CUPS czasem nie zapisuje tego ustawienia przy pierwszej próbie.

Szybka diagnoza:

cat /etc/cups/printers.conf

Powinno być:

Shared Yes

Jeśli jest No — zmiana nie została zapisana.

Dlaczego się nie zapisuje?
Najczęściej dlatego, że w cupsd.conf brakuje:

Allow @LOCAL

CUPS wtedy blokuje zapis konfiguracji.

5.6. Problem: dioda LED nie sygnalizuje stanu CUPS (GPIO6)

Przyczyna: gpioset w trybie domyślnym trzyma linię i nie kończy procesu.
Objaw: w systemctl status widać:

/usr/bin/gpioset GPIO6 0

Rozwiązanie:

W skrypcie używać:

gpioset -t 0 GPIO6=1

i analogicznie:

gpioset -t 0 GPIO6=0

To ustawia pin i kończy proces, pozwalając skryptowi działać dalej.

5.7. Problem: sudo systemctl stop cups nie zatrzymuje usługi

Przyczyna: CUPS jest aktywowany przez socket (cups.socket).
Windows lub nawet samo systemctl status automatycznie go wznawia.

Prawidłowy sposób zatrzymania:

sudo systemctl stop cups.service cups.socket

Dopiero wtedy LED przestanie świecić (bo CUPS naprawdę nie działa).

5.8. Problem: Raspberry Pi zawiesiło się lub straciło Wi-Fi, ale działa CUPS

Możliwe przy intensywnym bootowaniu lub słabym zasilaniu.

Szybkie sprawdzenie przez LED:

  • LED miga → CUPS nie działa, problem systemowy,
  • LED świeci → CUPS działa, ale być może sieć padła.

Można wtedy wejść przez SSH-over-USB i naprawić Wi-Fi.

5.9. Problem: nie znam adresu IP Raspberry Pi

Trzy podstawowe metody:

  • Metoda A – mDNS: ping raspberrypi.local
  • Metoda B – router (DHCP leases):
    zaloguj się na router, w podglądzie klientów DHCP powinna być nazwa hosta raspberrypi.
  • Metoda C – kabel USB (gadget mode):
    Pi pojawia się jako interfejs sieciowy (typowo 192.168.137.xxx pod Windows).

Leave a Comment