Ricoh Aficio SP C240DN su Anna/Linux Mint
Guida alla stampa via smartphone Android
Prerequisiti
Anna/Linux Mint con CUPS installato
Smartphone Android sulla stessa rete WiFi della stampante
App Ricoh Smart Device Connector installata (Play Store)
App Shortcut Maker installata (Play Store)
Stampante Ricoh Aficio SP C240DN connessa alla rete (es. 192.168.*.**)
Permessi Ricoh SDC: Impostazioni → App → Ricoh Smart Device Connector → Autorizzazioni → attiva tutto
PARTE 1 — Configurazione del telefono Android
1.1 Installa e aggiorna Termux
Scarica Termux dal Play Store o F-Droid. Apri Termux e lancia:
pkg update -y && pkg upgrade -y
pkg install python -y
1.2 Concedi accesso ai file
termux-setup-storage
Si apre il gestore file di Android: trova Termux nella lista e attiva "Consenti accesso a tutti i file". Torna su Termux.
1.3 Crea la cartella di stampa
mkdir -p ~/storage/shared/PrintQueue
1.4 Crea lo script del server di stampa
Prepara un file di testo sul PC con il contenuto qui sotto, invialo al telefono (es. via LocalSend), poi copia e incolla in Termux:
cat > ~/print_server.py << 'FINE'
import http.server, os, datetime, threading
CARTELLA = os.path.expanduser("~/storage/shared/PrintQueue")
PORTA = 9101
server = None
class GestoreStampa(http.server.BaseHTTPRequestHandler):
def do_POST(self):
if self.path == '/print':
lunghezza = int(self.headers.get('Content-Length', 0))
nome = self.headers.get('X-Filename', 'stampa_' + datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + '.pdf')
dati = self.rfile.read(lunghezza)
percorso = os.path.join(CARTELLA, nome)
with open(percorso, 'wb') as f:
f.write(dati)
print(f"\n>>> FILE RICEVUTO: {nome}")
self.send_response(200)
self.end_headers()
self.wfile.write(b'OK')
threading.Thread(target=os._exit, args=(0,)).start()
else:
self.send_response(404)
self.end_headers()
def log_message(self, *args):
pass
http.server.HTTPServer.allow_reuse_address = True
print("Server stampa attivo - in attesa... (timeout 1 minuto)")
timer = threading.Timer(60, lambda: os._exit(0))
timer.start()
server = http.server.HTTPServer(('0.0.0.0', PORTA), GestoreStampa)
server.serve_forever()
FINE
1.5 Crea la scorciatoia di avvio
mkdir -p ~/.termux && echo "allow-external-apps = true" >> ~/.termux/termux.properties
mkdir -p ~/.shortcuts && cat > ~/.shortcuts/AvviaStampa.sh << 'FINE'
#!/data/data/com.termux/files/usr/bin/bash
export PATH=/data/data/com.termux/files/usr/bin:$PATH
export HOME=/data/data/com.termux/files/home
python3 ~/print_server.py
FINE
chmod +x ~/.shortcuts/AvviaStampa.sh
echo "alias stampa='python3 ~/print_server.py'" >> ~/.bashrc && source ~/.bashrc
Chiudi completamente Termux (scorri via dal multitasking) e riaprilo.
1.6 Aggiungi la scorciatoia alla schermata home con Shortcut Maker
Apri Shortcut Maker
Seleziona il toggle "Scorciatoie"
Cerca Termux → seleziona Shortcut
Nella schermata successiva seleziona AvviaStampa.sh
Se vai a vedere nella Home si è creta una nuovo icona
Un appunto, io utilizzando un cellulare xiaomi e a causa del suo launcher non posso cambiare l’icona perché è quella di termux predominante. Su altri cellulari non sò come funzioni, se proprio volessi cambiarla potrei utilizzando Nova launcher , ma a questo punto è eccessivo.
1.7 Imposta IP fisso per il telefono
Impostazioni → WiFi → tieni premuto sulla rete → Modifica → Impostazioni avanzate → IP Statico:
Indirizzo IP: quello attuale del telefono (es. 192.168.1.**)
Gateway: IP del router (es. 192.168.1.254 per Fastweb, 192.168.1.1 per altri)
Prefisso di rete: 24
DNS 1: IP del router
DNS 2: 8.8.4.4
PARTE 2 — Configurazione di Anna/Linux Mint
2.1 Crea il backend CUPS
sudo nano /usr/lib/cups/backend/ricohphone
Incolla questo contenuto (sostituisci 192.168.1.** con l'IP del tuo telefono):
#!/bin/bash
PHONE_IP="192.168.1.**"
PHONE_PORT="9101"
if [ $# -eq 0 ]; then
echo "network ricohphone://192.168.1.** \"Ricoh via Telefono\" \"Stampa tramite Android\""
exit 0
fi
TITLE="$3"
FILE="$6"
TEMP=""
if [ -z "$FILE" ]; then
TEMP=$(mktemp /tmp/printjob_XXXXXX)
cat > "$TEMP"
FILE="$TEMP"
fi
PDF=$(mktemp /tmp/printjob_XXXXXX.pdf)
cp "$FILE" "$PDF"
FNAME=$(echo "$TITLE" | tr ' /' '__' | tr -cd '[:alnum:]._-')_$1.pdf
HTTP=$(curl -s -o /dev/null -w "%{http_code}" -X POST \
-H "Content-Type: application/pdf" \
-H "X-Filename: ${FNAME}" \
--data-binary "@${PDF}" \
--connect-timeout 10 \
"http://${PHONE_IP}:${PHONE_PORT}/print")
[ -n "$TEMP" ] && rm -f "$TEMP"
rm -f "$PDF"
[ "$HTTP" = "200" ] && exit 0 || { echo "ERRORE: server non raggiungibile" >&2; exit 1; }
Salva: Ctrl+O → Invio → Ctrl+X
2.2 Imposta i permessi
sudo chmod 700 /usr/lib/cups/backend/ricohphone && sudo chown root:root /usr/lib/cups/backend/ricohphone
2.3 Crea la stampante in CUPS
sudo lpadmin -p "Ricoh-via-Telefono" -E \
-v "ricohphone://192.168.1.**" \
-m "lsb/usr/cupsfilters/Generic-PDF_Printer-PDF.ppd" \
-D "Ricoh SP C240DN (via telefono)" \
-L "Stampa tramite Android"
2.4 Riavvia CUPS
sudo systemctl restart cups
PARTE 3 — Come stampare
3.1 Avvio del sistema
Sul telefono: tap sulla scorciatoia AvviaStampa nella schermata home
Termux si apre e il server parte automaticamente (timeout 1 minuto)
3.2 Invio della stampa da Anna/Linux Mint
Apri qualsiasi documento, foto o file
File → Stampa → seleziona "Ricoh-via-Telefono" → Stampa
Il file viene inviato automaticamente al telefono nella cartella PrintQueue
3.3 Stampa dal telefono
Tre modi equivalenti per stampare il file ricevuto:
Apri Ricoh Smart Device Connector → vai alla cartella PrintQueue → seleziona il file → tocca Stampa
Dal gestore file: vai in PrintQueue → tieni premuto sul file → Condividi → seleziona la stampante Ricoh → Stampa (metodo più veloce, senza aprire l'app per intero)
Apri il file con qualsiasi app (Adobe, OnlyOffice, ecc.) → usa Stampa o Condividi → seleziona la stampante Ricoh
Nota: Il server si chiude automaticamente dopo aver ricevuto il file oppure dopo 1 minuto. Non è necessario chiudere manualmente Termux.
PARTE 4 — Risoluzione problemi
Errore "Address already in use"
Una sessione precedente è ancora attiva. Aspetta 1 minuto che il timeout scada, poi riprova.
Il file non arriva sul telefono
Verifica che il server Termux sia in ascolto (schermata nera con "Server stampa attivo")
Verifica che il telefono abbia IP fisso e sia connesso al WiFi
Verifica che l'IP nel backend CUPS corrisponda all'IP del telefono
Il PDF arriva vuoto
Verifica che nel backend CUPS sia presente cp "$FILE" "$PDF" senza la conversione ghostscript.
ULTIMO APPUNTO: Ricordate di cambiare gli IP della stampante e del telefono e quelli del router e della rete casalinga.