ssh amb versions velles

Quan la versió de ssh del client és molt nova i la del servidor molt vella, tenim errors com “no matching host key type found. Their offer: ssh-dss”

Una solució és afegir IPs, rangs d’IPs o noms al fitxer ~/.ssh/config amb les següents línies

Host my.host.com *.myinsecure.net 192.168.1.* 192.168.2.*
    HostKeyAlgorithms ssh-dss
    KexAlgorithms diffie-hellman-group1-sha1

xRDP amb Debian 12 Mate

Per controlar una màquina Linux en mode gràfic tenim 2 opcions: VNC o xRDP. Amb VNC sempre hi ha històries de compatibilitat amb els diferents clients que hi ha i algun d’ells a passat a modalitat de pagament. xRDP és una bona opció, ja que tenim clients per les diferents plataformes:

  • Linux -> Remina
  • Mac -> Windows App
  • Windows -> Connexió a Escriptori Remot

Després de trastejar uns dies amb xRDP he trobat diferents problemes. El més important és que en alguns casos no funciona si l’ordinador a controlar no tenia pantalla en el moment d’engegar, cosa que dificulta el treball en mode headless. L’altre problema és que funcioni amb els diferents entorns gràfics. He aconseguit que funcioni amb XFCE i amb Mate. Personalment prefereixo Mate i aquest post explica la instal·lació en aquest cas.

1. Instal·lem Debian 12

El procés d’instal·lació de tota la vida… En el moment de triar els paquets a instal·lar, canviar GNOME per MATE i activar SSH, que sempre va bé.

2. Donem permisos de sudo a l’usuari

Si no treballem amb root, necessitem que l’usuari habitual amb el qual connectarem. Per això afegirem aquesta línia a /etc/sudoers, amb el vostre nom d’usuari corresponent:

esteve ALL=(ALL:ALL) ALL

3. Instal·lem xRDP

He trobat un script que et fa tota la feina eficientment. S’ha d’executar des de l’usuari normal, no des de root. És per això que hem activat el sudo al pas 2. Ho he trobat aquí.

Baixem el script d’Internet:

wget https://www.c-nergy.be/downloads/xRDP/xrdp-installer-1.4.2.zip

El descomprimim:

unzip xrdp-installer-1.4.2.zip

Li donem permisos d’execució:

chmod -x xrdp-installer-1.4.2.sh

L’executem des de l’usuari normal:

./xrdp-installer-1.4.2.sh

4. Un últim retoc perquè funcioni

Fet això no acaba de funcionar amb un error “Could not acquire name on session bus”. La solució que he trobat per arreglar-ho és editar el fitxer ~/.xsession i afegir-hi aquestes línies:

unset DBUS_SESSION_BUS_ADDRESS
unset SESSION_MANAGER
mate-session

I amb això ja ho tenim, muntem un client de RDP i provem de connectar-nos-hi.

Salut i bits !!

Xarxa amb més d’un servidor de DHCP

Podem saber si hi ha més d’un servidor DHCP a la xarxa amb aquesta comanda

nmap --script broadcast-dhcp-discover

Comandes Linux administració de xarxa

ip a o ip addr sh o ip addr show (antiga: ifconfig)

ip r o ip route sh o ip route sh (antiga: route -n)

ip link set eth0 up o nmcli dev connect eth0 (antiga: ifup eth0)

ip link set eth0 down o nmcli dev disconnect eth0 (antiga: ifdown eth0)

ip route add default via 192.168.253.1 dev eth0 (antiga: route add default gw 192.168.253.1 eth0)

ip route add 192.168.100.0/24 via 192.168.253.1 dev eth0 (antiga: route add -net 192.168.100.0/24 gw 192.168.253.1 eth0) I per fer una ruta persistent, a /etc/network/interfaces ficar-hi up ip route add 192.168.100.0/24 via 192.168.253.1 dev eth0

Corregir un fitxer de text que ha quedat marcat com a binari

tr -d '\000' < filein > fileout

OpenVPN quan el servidor no és el default gateway de la xarxa

Si el servidor OpenVPN no és el router de la xarxa, he de fer NAT perquè les màquines de la xarxa sàpiguen tornar els paquets

iptables -t nat -I POSTROUTING -o enp2s0 -s 10.8.0.0/24 -j MASQUERADE

Deshabilitar visual mode a vim

add to ~/.vimrc:

set mouse-=a
syntax on

Eggbot

El firmware que m’ha funcionat amb el CNC Shield d’Arduino és aquest:

https://github.com/Thingibox/EggBot/tree/master/Firmware

En aquest el servo ha d’anar al pin SpnEn

El motor que mou l’ou va al X i el motor que mou el rotulador al Y


Normalment si fas un Eggbot amb la versió free anomenada Eggduino, les extensions de Inkscape no reconeixen la placa. Cal fer això:

Editem el fitxer ebb_serial.py que trobarem al directori de les extensions de Inkscape extensions/axidraw_deps/plotink i busquem aquestes línies

ebb_port = None
   for port in com_ports_list:
      if port[1].startswith("EiBotBoard"):
         ebb_port = port[0] # Success; EBB found by name match.
         break # stop searching-- we are done.

if ebb_port is None:
   for port in com_ports_list:
      if port[2].startswith("USB VID:PID=04D8:FD92"):
         ebb_port = port[0] # Success; EBB found by VID/PID match.
         break # stop searching-- we are done.
return ebb_port

i fem aquests canvis:

ebb_port = "/dev/cu.usbserial-1420"
#   for port in com_ports_list:
#      if port[1].startswith("EiBotBoard"):
#         ebb_port = port[0] # Success; EBB found by name match.
#         break # stop searching-- we are done.
#if ebb_port is None:
#   for port in com_ports_list:
#      if port[2].startswith("USB VID:PID=04D8:FD92"):
#         ebb_port = port[0] # Success; EBB found by VID/PID match.
#         break # stop searching-- we are done.
return ebb_port

On si és un Linux posarem /dev/ttyUSB0 en la primera línia


Quan l’extensió busca l’eggbot li envia un caràcter “v” i espera resposta de la versió de firmware instal·lada. Doncs, en algunes combinacions d’Arduino i Firmware, la primera vegada no respon i no detecta la placa. Però si dupliquem la comprovació, la segona vegada funciona i tira endavant. Caldrà tocar aquestes línies del mateix miter ebb_serial.py del cas anterior. 

Hem de buscar la funció testPort i buscar aquestes línies:

serial_port.write('v\r'.encode('ascii'))
str_version = serial_port.readline()
if str_version and str_version.startswith("EBB".encode('ascii')):
   return serial_port

Només hem de duplicar les 2 primeres:

serial_port.write('v\r'.encode('ascii'))
str_version = serial_port.readline()
serial_port.write('v\r'.encode('ascii'))
str_version = serial_port.readline()
if str_version and str_version.startswith("EBB".encode('ascii')):
   return serial_port

Amb això sembla que funciona en tots els casos. Weid, but true


Amb el Mac nou no funciona l’eggbot amb Arduinos originals, només amb Arduinos xinos.

Tampoc crea la plantilla Eggbot, però això és tan simple com crear una plantilla nova amb unes mides de 3200 x 800 pixels.  

Instal·lar Debian amb RAID 1 software i EFI

  1. I’ve installed Debian without setting up the RAID for the ESP partition. During the partitioning, I’ve already created two identical partitions marked as ESP partitions. They were on /dev/sda1 and /dev/sdb1
  2. I’ve copied the contents of /boot/efi somewhere else (/root/eficopy).
  3. umount /boot/efi
  4. mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 --metadata=0.90 /dev/sda1 /dev/sdb1. Of course change /dev/md2 to something else if /dev/md2 is already an active MD device
  5. mkfs.vfat /dev/md2 (potser cal instal·lar el paquet dosfstools)
  6. found the UUID of the partition in /dev/disk/by-uuid
  7. changed the /boot/efi entry in /etc/fstab with the new UUID
  8. mount /boot/efi
  9. copy the data from the backup into /boot/efi again

Instead of backing up the /boot/efi partition, it seems that

grub-install --efi-directory=/boot/efi

Generar SVG amb Inkscape per la CNC

Si partim d’un DXF, amb el LibreCAD l’exportem a SVG amb les opcions:

  • Default width of elements > 0.1
  • Raster image export > ON
  • La resta per defecte

Des de Inkscape ja podem treballar el SVG:

  • Desagrupar tots els objectes diverses vegades per assegurar que no quedi cap grup
  • Seleccionar tots els objectes i fer un path > Object to path
  • Si és un objecte que volem que sigui una línia gruixuda, seleccionar tots els objectes que volem que formin un sol path i fer un path > Stroke to path
  • si és un objecte que volem que tingui àrea i és convex, seleccionar tots els objectes que volem que formin un sol path i fer un path > Fill between paths
  • si és un objecte que volem que tingui àrea i és concau, haurem de fer que els nodes del path estiguin ben enganxats. Si el mètode de l’objecte convex no fa bé la feina, provar això:
    • Seleccionar els nodes amb l’eina d’edició de nodes i fer Join selected nodes
    • Si tenim segments rectes que no acaben en node, esborrar-los, seleccionar els 2 nodes de les puntes i fer Join selected endnodes with a new segment
  • Seleccionar els objectes que volem que formin un sol path i fer path > Union

Al jscut li he hagut de posar 96 píxels/polsada perquè l’escala fos la correcta. No sé si això dependrà del DXF.

Paràmetres de tall

  • Velocitat sense tallar > 200mm/min
  • Velocitat eix Z > 5mm/min
  • Velocitat tallant > 120mm/min
  • Pas eix Z > 0,1 mm