Author Archives: giulio

Opzioni di connessione su ssh (e git)

Sulla scia del precedente articolo riguardo le sequenze di escape di ssh, proseguiamo con alcuni tips riguardo ad ssh utili per semplificarci la vita.

Se si devono fare diverse operazioni su server con impostazioni personalizzate (ad esempio la porta diversa da 22) può essere tedioso ricordarsi le opzioni giuste da passare ad ssh o scp. Quindi, è possibile definire nel proprio file ~/.ssh/config uno o più alias così da omettere utente, porta, hostname esplicito o altre opzioni più creative:

Host myhost
    Hostname dominiolungo.example.com
    User johndoe
    Port 1234

In questo modo, anziché dover digitare ogni volta ssh -p 1234 johndoe@dominiolungo.example.com sarà sufficiente battere semplicemente ssh myhost. Comodo, no?

Queste opzioni si ripercuotono su tutti i servizi che usano openssh come agente ssh di default, come scp, rsync o git. Quindi, se johndoe sta hostando un server git a suo nome, il comando git clone myhost:myrepos/project.git farà il suo dovere alla perfezione.

È possibile specificare anche opzioni più peculiari, ad esempio per instaurare un forwarding X11 (ForwardX11 yes), oppure per effettuare un port forwarding (LocalForward 8080:192.168.1.1:80):

Host mygui
    Host casamia.noip.example.com
    ForwardX11 yes

Host alicegate
    Host casamia.noip.example.com
    LocalForward 8080:192.168.1.1:80

Per maggiori informazioni si rimanda al man di ssh_config.

Sequenze di escape SSH

Sarà capitato a tutti di utilizzare SSH, per collegarsi ad un server o ad Raspberry-equivalente nella propria rete locale. Se si verificano problemi di connettività, capita che ssh possa piantarsi senza accettare più alcun comando, dovendo terminarlo grezzamente chiudendo la finestra del terminale o con kill.
L’evento si verifica perché il client ritiene di avere delle connessioni attive in sospeso e ci fa il piacere di rimanere in attesa in modo da poterle riprendere non appena la connettività di rete torna ad essere stabile. Ma se questo non avviene, il processo resta lì e tocca ucciderlo.

Oppure… si può richiedere la chiusura della connessione in modo più garbato. OpenSSH mette a disposizione una serie di sequenze di escape, comandi che non vengono inviati al server remoto ma vanno a dialogare direttamente con il processo ssh in corso. Una sequenza di escape comincia, per impostazione predefinita, con ~ (tilde), che deve essere inviata come primo carattere della linea (ovvero dopo aver battuto invio).

Per esempio, battendo ~. (tilde seguita da un punto) si termina la connessione corrente, rispondendo al problema di cui sopra.

Con ~? abbiamo una lista delle sequenze supportate:

Supported escape sequences:
  ~.  - terminate connection (and any multiplexed sessions)
  ~B  - send a BREAK to the remote system
  ~C  - open a command line
  ~R  - Request rekey (SSH protocol 2 only)
  ~^Z - suspend ssh
  ~#  - list forwarded connections
  ~&  - background ssh (when waiting for connections to terminate)
  ~?  - this message
  ~~  - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

Per commentarne alcune:

  • Con ~# si interroga il processo ssh in uso sul numero di connessioni aperte: normalmente si ha solo una riga con il terminale corrente. Nel caso in cui si siano attivati dei tunnel li si vedranno comparire in lista (vedi le opzioni -X, -R e -L di ssh per approfondire).
  • ~Z è l’equivalente dell’usuale control-Z e sospende il processo ssh. Un control-Z, così come qualsiasi altra sequenza di tasti che non comincia per ~, viene inviata alla sessione remota.
  • Infine, se per qualche motivo si volesse inviare una ~ come primo carattere senza inavvertitamente innescare una sequenza di escape, è sufficiente inserire ~~.

Smistamento delle alimentazioni su KiCAD

Problema: in un circuito stampato, quando si sbrogliano le piste di alimentazione, capita spesso di non poterne definire una larghezza univoca: in presenza di vincoli sul surriscaldamento o sulla caduta di tensione si deve imporre una ben precisa larghezza minima. Tali vincoli si scontrano quando la pista risulta troppo larga per determinati componenti (soprattutto qualche ostico SMD!)

Un primo metodo consiste nella gestione manuale: laddove si ha bisogno di percorsi a resistività inferiore si imposta una larghezza più elevata.
Chiaramente la net class sarà qui ininfluente e settata ai valori minimi. Il DRC (Design Rule Check) quindi non ha modo svolgere alcuna verifica, visto che la scelta adeguata ricade tutta sull’umano alla progettazione.
Chiaramente questo metodo non è pratico quando le dimensioni della PCB crescono, soprattutto se si vuol avere una doppia conferma dei vincoli rispettati.

L’unico modo per poter impostare regole diverse ad un segnale è quello di suddividerlo in segmenti con diverse label, giuntate assieme attraverso dei jumper o net-ties.

Alimentazione “power” e “regular” unite con net tie

A livello di layout, a ciascun jumper si va ad associare una footprint net-tie. CvPCB mette a disposizione un set di impronte preconfezionate che implementano banalmente dei cortocircuiti ed evitano conflitti a livello di DRC (e, come si diceva inizialmente, rendono più agevole il collegamento).

Questo particolare flusso permette anche di controllare con maggiore accortezza le diramazioni delle linee di potenza. Le alimentazioni non andrebbero piazzate a casaccio, pena la perdita di performance di un circuito o il cattivo funzionamento dei suoi componenti.
Consideriamo l’esempio di un circuito con due aree: una “maggiormente esosa” in termini di risorse energetiche, l’altra più parsimoniosa e che possibilmente desidererebbe una alimentazione pulita e stabile. Il giunto dovrebbe situarsi il più a monte possibile, così da “isolare” il più possibile le due aree.

Prelievo di tensione a monte, nei pressi di un regolatore di tensione

Estate 2020: dall’idea al circuito stampato

Si ripropongono gli incontri di elettronica ed open hardware pensati per Marzo e annullati in accordo alle misure di contenimento sanitario.

Visti i recenti sviluppi nell’attività di elettronica e open hardware portata avanti presso il GOLEM negli ultimi tempi, e grazie alla messa in funzione della fresa elettronica e della disponibilità della stampante 3D, è stato pianificato il seguente ciclo di serate a tema.

Scopo delle serate è analizzare il ciclo completo per la produzione di un circuito elettronico, facendo uso solo di strumenti opensource.

  • 16 giugno: Introduzione a KiCAD – prima parte. Si tratta di un software opensource di Electronic Design Automation, ossia di progettazione assistita al computer per circuiti elettronici. KiCAD permette di progettare ogni fase della realizzazione del circuito, dalla sua prima bozza, alla scelta e al posizionamento dei componenti, allo sbroglio delle piste, alla produzione dei file per lo stampaggio vero e proprio. In questo primo incontro si vedrà perché e come disegnare uno schema elettronico al computer, come importare i componenti, come associare i simboli grafici agli oggetti fisici.
  • 30 giugno: Introduzione a KiCAD – seconda parte. Disegnato lo schema sarà necessario realizzare il layout, la controparte digitale del circuito stampato. Al termine della serata, il prodotto potrà essere mandato in stampa presso aziende specializzate tramite processi industriali, oppure potrà essere utilizzato la serata seguente. Saranno approfondite alcune funzioni supplementari di KiCAD, come la gestione della lista componenti e delle librerie.
  • 7 luglio: Introduzione a FlatCAM. Flatcam è un software che, a partire da file gerber o gcode, permette di passare all’incisione e all’intaglio vero e proprio del circuito tramite una macchina a controllo numerico. Al termine della serata, il prodotto potrà essere inciso tramite una CNC, come quella che abbiamo in officina, come vedremo nella serata successiva.
  • 14 luglio: Uso della fresa CNC del GOLEM. Il modo più veloce, economico e pulito per prototipizzare un circuito stampato, oggi, è tramite l’uso di una macchina a controllo numerico, che, partendo da delle basette completamente ricoperte di rame, le intaglia in maniera tale da ottenere le piste per il circuito stampato. La fresa, comandata dal sistema operativo a bassa latenza LinuxCNC, al termine della serata, produrrà il circuito stampato, sul quale sarà possibile saldare tutti i componenti, e potrà finalmente essere utilizzato. L’utilizzo della fresa sarà consentito solo al personale qualificato, che eventualmente provvederà a organizzare un corso per gli interessati.

Vi aspettiamo numerosi! Le serate saranno trasmesse sul server meet il martedì sera dalle 21.30!
Potrà fare eccezione la serata d’uso della CNC che richiederà lo svolgimento in loco, seguiranno maggiori informazioni.

Per qualunque informazione, siamo raggiungibili per mezzo dei nostri numerosi canali.

Appuntamenti virtuali

Visto che per un po’ non sarà possibile riunirsi fisicamente in Officina Informatica, il Martedì sera saremo raggiungibili in Officina Virtuale al seguente indirizzo:

https://golem.linux.it/meet

Pianificheremo le serate sul calendario pubblico, qui a lato (o in fondo alla pagina, da smartphone).

(Anche se non ci sono appuntamenti in programma, è probabile comunque di trovare qualcuno a fare due chiacchiere)

❗️ Alcune semplici regole: tenere il microfono disattivato se non per porre domande o partecipare alla discussione. Evitare di attivare la webcam per non sovraccaricare la rete.

📝 Poiché il sistema di videoconferenza non è ancora definitivo, si ricorda di seguire sempre il link evidenziato, che rimanderà automaticamente al server giusto anche qualora quest’ultimo dovesse essere cambiato.