La tête de l'extrudeur étant directement utilisée pour sonder le niveau du lit, la compensation pour les axes X et Y est nulle.
La compensation pour l'axe Z sera mesurée directement, on la définit à 0 dans un premier temps.
Compiler et téléverser le nouveau firmware sur le RAMPS
Exécuter le code ci-dessous pour préparer la mesure de la compensation de l'axe Z :
G28 X ; home X
G28 Y ; home Y
G28 Z ; home Z
G1 Z10 ; fix Z to avoid glass-break
G29 ; auto bed level
G1 Z10 ; fix Z to avoid glass-break
G1 X100 Y150 ; position extruder in center of the bed (300x200)
Mesurer la compensation pour l'axe Z
Placer une feuille de papier sur le lit et descendre l'extrudeur petit à petit jusqu'à ce que le papier soit pincé entre l'extrudeur et le lit, le papier doit encore pouvoir bouger tout en étant légèrement "accroché".
A ce moment, lire la mesure Z sur l'écran LCD, la valeur lue correspond à la compensation pour l'axe Z.
Mettre à jour la variable Z_PROBE_OFFSET_FROM_EXTRUDER avec la valeur trouvée et compiler/téléverser de nouveau le firmware sur le RAMPS.
Custom G-code (slic3r)
G28 X ; home all axes
G28 Y
G28 Z
G29 ; z-probe
G1 Z3
G1 X0 Y0 F3000 ; fix feedrate for next moves
G1 Z0
Example "Ptr G-code -> Prefix" in KISSlicer
M104 S<TEMP>
G28 X
G28 Y
G28 Z
G29; Detailed Z-Probe
G1 Z3
G1 X100 Y200 F3000
G1 Z0
M109 S<TEMP>
Note : Ce script est une version modifiée de celui fourni par robzr sur le forum OpenWrt.
Créer le fichier /usr/sbin/dropBrute.sh et copier le contenu suivant :
#!/bin/sh
# ------------------------------------------------------------------------------
# dropBrute.sh : minimalist OpenWRT/dropbear ssh brute force attack banning script
# ------------------------------------------------------------------------------
# initial release by robzr
# ------------------------------------------------------------------------------
# Installation steps:
# 1) Edit the variables in the header of this script to customise for your environment.
# 2) Insert a reference for this rule in your firewall script before you accept ssh.
# This will block the brute force attack until the IP is banned by the script.
# iptables -N logndrop
# iptables -N dropBrute
# iptables -A logndrop -j LOG
# iptables -A logndrop -j DROP
# iptables -A input_rule -p tcp --dport 22 -i eth1 -m state --state NEW -m recent --set
# iptables -A input_rule -p tcp --dport 22 -i eth1 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j logndrop
# iptables -A input_rule -p tcp --dport 22 -j dropBrute
# 3) Run the script periodically out of cron:
# echo '*/10 * * * * /usr/sbin/dropBrute.sh 2>&1 >> /tmp/dropBrute.log' >> /etc/crontabs/root
# 4) If cron is not enabled, you'll also need to run the following:
# /etc/init.d/cron enable && /etc/init.d/cron start
# ------------------------------------------------------------------------------
# To whitelist hosts or networks, simply add a manual entry to the lease
# file with a leasetime of -1. This can be done with the following syntax:
# echo -1 192.168.1.0/24 >> /tmp/dropBrute.leases
# A static, or non-expiring blacklist of a host or network can also be
# added, just use a lease time of 0. This can be done with the following syntax:
# echo 0 1.2.3.0/24 >> /tmp/dropBrute.leases
# ------------------------------------------------------------------------------
# =========================== CUSTOMIZABLE VARIABLES ===========================
# Debug mode (let empty to disable, debug = '')
debug='1'
# How many bad attempts before banning.
allowedAttempts=3
# How long IPs are banned for (in seconds)
secondsToBan=86400
# the "lease" file - defaults to /tmp which does not persist across reboots
# Note: here, USB key is mounted on /tmp/cache. This way, leases file persists across reboots
leaseFile=/tmp/cache/dropBrute.leases
# Iptables chain that drop commands will go into.
iptChain=dropBrute
# IP Tables drop & whitelist rules
iptDropRule='-j DROP'
iptWhiteRule='-j RETURN'
# Default leasefile entries
[ -f $leaseFile ] || cat <<__EOF__>>$leaseFile
-1 192.168.1.0/24
__EOF__
# Path to iptables command
ipt='/usr/sbin/iptables'
# ======================= END OF CUSTOMIZABLE VARIABLES ========================
# ------------------------------------------------------------------------------
[ `date +'%s'` -lt 1320000000 ] && echo System date not set, aborting. && exit -1
$ipt -N $iptChain >&/dev/null
now=`date +'%s'`
nowPlus=$((now + secondsToBan))
echo ------ Starting dropBrute on `date` \($now\)
# find new badIPs (method 1)
[ "$debug" ] && echo Looking for bad IPs \(method 1\)
for badIP in `logread | fgrep dropbear | egrep -i 'login attempt for nonexistent user'\|'bad password attempt for'| sed 's/^.*from //' | sed 's/:.*$//' | sort -u` ; do
[ "$debug" ] && echo - Working on $badIP
n=`logread | fgrep dropbear | egrep -i 'login attempt for nonexistent user'\|'bad password attempt for'|sed 's/^.*from //'|sed 's/:.*$//' | fgrep $badIP | wc -l`
if [ $n -ge $allowedAttempts ] ; then
[ "$debug" ] && echo ... KO \($n occurences\)
# if there is not a lease, add it
if [ $(egrep -c $badIP$ $leaseFile) -eq 0 ] ; then
echo $nowPlus $badIP >> $leaseFile
[ "$debug" ] && echo ... Adding new lease for $badIP
else
[ "$debug" ] && echo ... Lease for $badIP already exists
fi
else
[ "$debug" ] && echo ... Ok \($n occurences\)
fi
done
# find new badIPs (Method 2)
[ "$debug" ] && echo Looking for bad IPs \(method 2\)
for fuzzyIP in `logread | fgrep dropbear | egrep -i 'Child connection from' | sed 's/^.*from //' | sed 's/:.*$//' | sort -u` ; do
n=0
[ "$debug" ] && echo - Working on $fuzzyIP
for fuzzyPs in `logread | fgrep dropbear | egrep -i 'Child connection from' | fgrep $fuzzyIP | sed 's/^.*dropbear\[//' | sed 's/\]:.*$//' | sort -u` ; do
nbPs=`logread | egrep -i 'Exit before auth' | fgrep $fuzzyPs | wc -l`
n=$((n+nbPs))
done
if [ $n -ge $allowedAttempts ] ; then
[ "$debug" ] && echo ... KO \($n occurences\)
# if there is not a lease, add it
if [ $(egrep -c $fuzzyIP $leaseFile) -eq 0 ] ; then
echo $nowPlus $fuzzyIP >> $leaseFile
[ "$debug" ] && echo ... Adding new lease for $fuzzyIP
else
[ "$debug" ] && echo ... Lease for $fuzzyIP already exists
fi
else
[ "$debug" ] && echo ... Ok \($n occurences\)
fi
done
# now parse the leaseFile
[ "$debug" ] && echo Parsing the leasefile
cat $leaseFile | while read lease ; do
leaseTime=`echo $lease|cut -f1 -d\ `
leaseIP=`echo $lease|cut -f2 -d\ `
# when used with the iptables example on the top a return rule is not needed
if [ $leaseTime -lt 0 ] ; then
if [ `$ipt -S $leaseChain|egrep \ $leaseIP/32\ \|\ $leaseIP\ |fgrep -- "$iptWhiteRule"| wc -l` -lt 1 ] ; then
#[ "$debug" ] && echo Adding new whitelist rule for $leaseIP
#$ipt -I $iptChain -s $leaseIP $iptWhiteRule
true
fi
elif [ $leaseTime -ge 1 -a $now -gt $leaseTime ] ; then
[ "$debug" ] && echo - Expiring lease for $leaseIP
$ipt -D $iptChain -s $leaseIP $iptDropRule
$ipt -D $iptChain -s $leaseIP -j LOG --log-prefix "dropBrute "
sed -i /$leaseIP/d $leaseFile
elif [ $leaseTime -ge 0 -a `$ipt -S $leaseChain|egrep \ $leaseIP/32\ \|\ $leaseIP\ |wc -l` -lt 1 ] ; then
[ "$debug" ] && echo - Adding new rule for $leaseIP
$ipt -I $iptChain -s $leaseIP $iptDropRule
$ipt -I $iptChain -s $leaseIP -j LOG --log-prefix "dropBrute "
fi
done < $leaseFile
echo ------ Ending dropBrute on `date` \(`date +'%s'`\)
jeudi 23 juillet 2015
:: Gestion des volumes logiques sous Debian ::
Installation
# apt-get update && apt-get install lvm2
# dpkg-query -l lvm2
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=attend-traitement-déclenchements
|/ Err?=(aucune)/besoin Réinstallation (État,Err: majuscule=mauvais)
||/ Nom Version Architecture Description
+++-==========================================-==========================-==========================-=========================================================================================
ii lvm2 2.02.95-8 amd64 Linux Logical Volume Manager
cylinder() pour un cylindre ou un cône, tronqué ou non,
sphere() pour une sphère,
polyhedron() pour un polyèdre.
Toutes ces commandes comportent, dans les parenthèses qui suivent leur nom, un ou plusieurs paramètres. Ils sont particuliers à chaque commande et indiquent généralement des dimensions ou des distances, toujours en millimètres, parfois des instructions de rendu.
Formes 2D
square() pour un carré ou rectangle,
circle() pour un cercle,
polygon() pour un polygone.
Elles n’ont pas d’épaisseur, celle-ci leur est donnée par les commandes de transformation linear\_extrude() et rotate\_extrude().
Commandes de transformation
Les formes 3D et 2D peuvent être combinées et manipulées pour former des objets complexes, par des commandes de transformation dont voici les principales :
difference() pour extraire une forme d’une autre,
union() pour unir plusieurs éléments,
translate() pour déplacer un élément,
rotate() pour pivoter un élément,
intersection() pour ne conserver que la partie commune de deux formes se chevauchant,
resize() pour modifier la taille d’un élément,
color() pour colorer l’affichage d’un élément,
hull() pour réaliser une fusion de formes,
minkowski() pour créer un enveloppement d’une forme par une autre,
import() pour utiliser un fichier STL ou DXF,
linear_extrude() et rotate_extrude() pour donner une élévation à une forme 2D.
cpan> install Module::Name # Installe le module "Module::Name"
cpan> r [Module/RegExp] # Liste les mises à jours de modules disponibles
cpan> upgrade [Module/RegExp] # Installe les mises à jours de modules disponibles
La plupart des pièces composant ce scanner 3d sont imprimables ce qui en fait quasiment un "self-replicable".
Les fichiers STL sont disponibles sur Thingiverse :
3D controller : NVIDIA Corporation GM108M [GeForce 840M]
Installation Ubuntu 14.04 LTS
Création de la clé usb
$ sudo dd if=ubuntu.iso of=/dev/sdx bs=512k
Attention à ne pas se tromper de disque !!
Démarrer le portable et entrer dans le menu de configuration (touche F2)
Paramétrer le démarrage sur la clé USB, normalement cette dernière est détecté automatiquement comme partition de boot EFI et est proposé dans la liste des options de boot.
Si ce n'est pas le cas, créer une nouvelle option de boot et indiquer le chemin vers le fichier bootx64.efi
A noter qu'Ubuntu supporte le boot EFI, on peut donc conserver ce mode et profiter de ses avantages en terme de sécurité.
Installation de Wicd en remplacement de Network-Manager
Dans mon cas, Network-Manager ne se connecte pas au point d'accès présent au boulot (un WPA2 Personal un peu spécial)...
A l'opposé Wicd fonctionne trés bien, je l'ai donc installé en remplacement de Network-Manager.
Installation de Wicd
En premier lieu, on réinstalle network-manager. Ceci pour l'avoir dans le cache apt si jamais Wicd venait à ne pas fonctionner.
Activation de l'icône Wicd dans la barre des tâches
Depuis la version Ubuntu 13.04, le paramètre 'whitelist' de la zone de notification Unity n'existe plus...
Pour pallier à ce manque, voici la marche à suivre :