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

 

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

Ajusta Z offset Anycubic amb BLTouch

He afegit BLTouch a la impressora Anycubic I3 Mega. Per ajustar el Z he de fer:

  1. Escalfar el llit
  2. G28 >> homing
  3. G90 >> set mode absolute posicioning
  4. G1 Z10 >> ves a Z=10
  5. G1 X40 Y40 F4000 >> ves a X=40 i Y=40  a 4000mm/min
  6. M280 P0 S10 >> baixa el pin del BLTouch
  7. G91 >> set mode relative posicioning
  8. Baixar lentament l’extrusor fins que el pin del BLTouch salti. Pots fer servir G1 Z-1 o bé G1 Z-0.1 per anar mes lentament.
  9. Si el pin ha saltat i fa pampallugues M280 P0 S160 per silenciar l’alarma
  10. M114 >> per obtenir la posició actual del nozzle. Registrem la posició de la Z (Z1)
  11. G90 >> set mode absolute posicioning
  12. G1 X38 Y15 F4000 >> desplaça el nozzle al punt on ha fet la mesura el BLTouch (movent l’offset XY entre el nozzle i el Bltouch)
  13. G91 >> set mode relative posicioning
  14. Posar un tall de paper sota el nozzle
  15. Baixar lentament l’extrusor fins que costi moure el paper sota el nozzle. Pots fer servir G1 Z-1 o bé G1 Z-0.1 per anar mes lentament.
  16. M114 >> per obtenir la posició actual del nozzle. Registrem la posició de la Z (Z2)
  17. Calculem Z2 – Z1 i aquest és el offset que necessitem. Sí, és un numero negatiu.
  18. M851 Z-2.6 >> defineix un offset de -2.6
  19. M500 >> guardar el valor a la EEPROM

Afegim el gcode G29 a la seqüència d’inici de la impressora en el laminador que utilitzem, just després de fer el homing.

Comandaments GCODE per controlar el BLTouch

  • M280 P0 S260 ;reset
  • M280 P0 S120 ;self test
  • M280 P0 S90 ;stow probe pin
  • M280 P0 S10 ;deploy probe pin

Galetes de xocolata (cookies)

Ingredients per a 24 unitats

  • 115gr de mantega a temperatura ambient
  • 100gr de sucre moreno
  • 100gr de sucre extrafi
  • 1 ou lleugerament batut
  • 1/4 de cullaradeta d’essència de vainilla
  • 155gr de farina
  • una pessic de llevat
  • 100gr d’ametlles picades
  • 150gr de trocets de xocolata

Preparació:

  1. Escalfar el forn a 180ºC. Mentrestant, untar 2 safates de forn amb mantega fosa i deixar refredar fins que endureixi.
  2. Utilitzar una cullera de fusta o un robot de cuina per batre la mantega i els 2 tipus de sucre fins a obtenir una barreja lleugera i esponjosa. Incorporar l’ou i la vainilla gradualment, batent bé després de cada addició.
  3. Tamisar la farina, el llevat i les ametlles picades. Afegir la meitat a la barreja cremosa. Quan es vegi tot homogeni, afegir la resta de la barreja amb els trocets de xocolata sense deixar de remenar.
  4. Separar la barreja en 24 porcions i donar-los forma esfèrica. Col·locar-les separades en les 2 safates de forn i aplastar-les una mica. Fornejar durant 15 a 20 minuts o fins que estiguin daurades. Retirar-les de la safata mentres estan encara calentes i passar-les a una reixeta. Repetir l’operació amb la resta de la barreja. Un cop fornejades deixar-les refredar abans de tancar-les en qualsevol recipient.

Canvis de format d’àudio amb sox

Per passar de alaw a wav
sox --channels 1 --type raw --rate 8000 -e a-law input_file.alaw output_file.wav

Per passar de mp3 a wav
sox input_file.mp3 -c1 -r 8000 output_file.wav

Per passar de wav a alaw
sox -V input_file.wav -r 8000 -c 1 -t ul output_file.alaw

Monitorització rendiment disc en Linux

La comanda dstat ens pot ajudar a veure si tenim temps d’espera de la CPU per accedir al disc, a través del paràmetre “wai”
La comanda podria ser aquesta:

 dstat -tcdD total,sda,sdb 60

Veure en els logs de correu quina web i script els envia

Primer de tot, s’han de crear dos fitxers:

  • /usr/share/php/sendmail-wrapper-php-vars.php
<?php
putenv("HTTP_HOST=".@$_SERVER["HTTP_HOST"]);
putenv("SCRIPT_NAME=".@$_SERVER["SCRIPT_NAME"]);
putenv("SCRIPT_FILENAME=".@$_SERVER["SCRIPT_FILENAME"]);
putenv("DOCUMENT_ROOT=".@$_SERVER["DOCUMENT_ROOT"]);
putenv("REMOTE_ADDR=".@$_SERVER["REMOTE_ADDR"]);
?>
  • /usr/sbin/sendmail-wrapper-php
#!/bin/sh
logger -p mail.info sendmail-wrapper-php: site=${HTTP_HOST},client=${REMOTE_ADDR}, script=${SCRIPT_NAME},pwd=${PWD}, uid=${UID}, user=$(whoami)
/usr/sbin/sendmail -t -i $*

Un cop fet s’han de fer executables.

chmod a+x /usr/sbin/sendmail-wrapper-php

chmod a+x /usr/share/php/sendmail-wrapper-php-vars.php

I finalment s’han de fer 2 canvis al php.ini:

;auto_prepend_file =
;GRN -> Agefim el prepend per el nostre fitxer per registra els logs del mail
auto_prepend_file = /usr/share/php/sendmail-wrapper-php-vars.php
;sendmail_path = "/usr/sbin/sendmail -t -i -f mail@domini"
;GRN -> Agefim el prepend per el nostre fitxer per registra els logs del mail
sendmail_path = /usr/sbin/sendmail-wrapper-php

Recarregant l’apache t’hauria de deixar els logs al mail.info de quina web és la que està enviant correus i via quin script