Skip to content

Instantly share code, notes, and snippets.

@bistory
Last active January 22, 2025 14:58
Show Gist options
  • Save bistory/7fc7ddc961eb776e12c83bde8f951830 to your computer and use it in GitHub Desktop.
Save bistory/7fc7ddc961eb776e12c83bde8f951830 to your computer and use it in GitHub Desktop.
  1. Système à jour, Klipper à jour et dfu-util installé ( sudo apt-get install dfu-util )

  2. Installation de CanBoot

git clone https://github.com/Arksine/CanBoot
cd CanBoot
make menuconfig
make
  1. Passer en DFU-mode (JUMPER; Reset + Boot; Relâcher Reset; Relâcher Boot)
  2. lsusb pour récupérer id de la carte
  3. dfu-util --list pour vérifier que l'appareil est accessible
  4. sudo dfu-util -a 0 -d 0483:df11 --dfuse-address 0x08000000:force:mass-erase -D ~/CanBoot/out/canboot.bin
  5. Créer fichier /etc/network/interfaces.d/can0 avec le contenu suivant :
auto can0
iface can0 can static
    bitrate 1000000
    up ifconfig $IFACE txqueuelen 1024
sudo wget https://upyun.pan.zxkxz.cn/shell/can-enable -O /usr/bin/can-enable > /dev/null 2>&1 && sudo chmod +x /usr/bin/can-enable || echo "The operation failed"
sudo cat /etc/rc.local | grep "exit 0" > /dev/null || sudo sed -i '$a\exit 0' /etc/rc.local
sudo sed -i '/^exit\ 0$/i \can-enable -d can0 -b 1000000 -t 1024' /etc/rc.local
  1. Reboot

  2. Placer jumpers 120R sur la board

  3. Config Klipper pour canboard

  4. make clean && make

  5. sudo service klipper stop

  6. ~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0

  7. ~/klippy-env/bin/python ~/klipper/lib/canboot/flash_can.py -i can0 -f ~/klipper/out/klipper.bin -u 5b06f23bc9ca

  8. sudo service klipper start

@vinoudropdrop
Copy link

vinoudropdrop commented Jan 22, 2025

Ca ne marche plus.
Le site de https://upyun.pan.zxkxz.cn/shell/can-enable est down. Je propose une alternative qui n'utilise pas de script tout fait, mais qui fait la meme chose, faut juste mettre a peine plus les mains dans le cambouis :

  1. Suivre ton tuto jusquà l'étape 6

  2. Remplacer la configuration CAN au fichier :

sudo nano /etc/network/interfaces.d/can0

Contenu :

auto can0
iface can0 inet manual
pre-up /sbin/ip link set can0 type can bitrate 1000000
up /sbin/ip link set can0 up
down /sbin/ip link set can0 down

Sauvegarder le fichier (Ctrl+O, Enter, Ctrl+X)

  1. Charger le module CAN au démarrage :

sudo nano /etc/module

Ajouter à la fin du fichier :

can
can_raw
can_dev

Sauvegarder le fichier (Ctrl+O, Enter, Ctrl+X)

  1. Installer can-utils

sudo apt install can-utils

  1. (facultatif) Si c'est pour un HAT CAN ou un module SPI, s'assurer que le dtoverlay approprié est activé dans /boot/config.txt. Par exemple pour un MCP2515 :

sudo nano /boot/config.txt

dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25

Sauvegarder le fichier (Ctrl+O, Enter, Ctrl+X)
(moi j'utilise un bigtreetech U2C V2.1 et un ebb42, donc je n'ai pas besoin de l'étape 4.)

  1. Pour prévenir le risque d'une erreur timed_out si l'on débranche par erreur l'usb il faut créer une règle udev qui établira les bonnes permissions et configurations dès que le U2C est branché :

sudo nano /etc/udev/rules.d/80-can-u2c.rules

Contenu :

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="606f", MODE="0666", TAG+="systemd", ENV{SYSTEMD_WANTS}="slcan.service"

Sauvegarder le fichier (Ctrl+O, Enter, Ctrl+X)

Ensuite, créer un service systemd qui s'occupera de configurer l'interface CAN :

sudo nano /etc/systemd/system/slcan.service

Contenu :

[Unit]
Description=CAN interface setup for U2C
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c 'modprobe can && modprobe can_raw && modprobe gs_usb && ip link set can0 type can bitrate 1000000 && ip link set can0 up'
ExecStop=/bin/bash -c 'ip link set can0 down'

[Install]
WantedBy=multi-user.target
Sauvegarder le fichier.
Enfin, activons et démarrons le service :
sudo systemctl daemon-reload
sudo systemctl enable slcan.service
sudo udevadm control --reload-rules

Sauvegarder le fichier (Ctrl+O, Enter, Ctrl+X)

Maintenant, en débranchant/rebranchant le U2C :

  1. udev détectera automatiquement l'appareil

  2. Le service systemd configurera l'interface CAN avec les bons paramètres

  3. Enfin, voilà la commande pour vérifier l'état suite au débranchement/rebranchement de la carte controle CAN ou redémarrage du systeme :

ip -details link show can0

et celle permettant d'afficher le trafic can (nécessite can-utils) :

candump can0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment