Creality Sonic Pad - Klipper Oficial, custom firmware

Como muchas veces hemos comentado, la Creality Sonic Pad utiliza un firmware personalizado por Creality y que por desgracia no está actualizado por lo que la compatibilidad y acceso a según que opciones de Klipper no son posibles.

Pero, ¿por qué es importante utilizar un firmware custom, no de Creality, para poder disponer de una versión Klipper oficial y actualizada?

La versión stock del sistema operativo de la Creality Sonic Pad utilizan una distribución llamada Tina, una versión a su vez que es un fork de OpenWRT hecha por Allwinner para sus procesadores, que es el que justamente monta la Creality Sonic Pad.

Creality ha personalizado esta distribución para instalar los componentes de Klipper como es el core de Klipper, Moonraker y Klipper Screen y personalizarlos para su ecosistema pero, por otro lado, esta customizacion se basa en versiones antiguas de Klipper por lo que perdemos ciertas funciones y compatibilidad.

Aquí es donde entra en juego la comunidad y el proyecto para crear una distribución para la Creality Sonic Pad con un Debian y Klipper oficial preinstalado además de compatible con herramientas como Kiauh para poder instalar o actualizar los componentes de Klipper o relacionados.

Instalación custom firmware (Debian) en la Creality Sonic Pad

A continuación os vamos a describir los pasos del proceso, de todas formas os facilitamos el siguiente video que puede facilitar entender el proceso.

Links importantes que pueden ser de utilidad durante el proceso:

Descarga del custom firmware (Debian) para la Creality Sonic Pad

Disponemos de los ficheros a descargar desde el apartado Releases del proyecto Sonic Pad Debian del compañero Jpe230. Hemos de descargar el zip y todos los zxx que estén en el apartado Assets de cada release:

Una vez descargados los descomprimimos y nos dejará un fichero con la imagen con extensión .img.

Descarga de PhoenixSuit

El siguiente paso será la descarga de PhoenixSuit que podremos encontrar en la carpeta tools dentro del repositorio oficial de Creality Sonic Pad donde encontraremos versiones para Windows y MacOS.

Una vez descargado lo descomprimimos en nuestro ordenador y abriremos la aplicación cargando la imagen descargada en el punto anterior:

Creality Sonic Pad en modo BOOT

A continuación conectaremos el cable USB (USB-A macho a USB-A macho!!!) entre nuestro ordenador y nuestra Creality Sonic Pad... es importante hacerlo en el puerto USB con la etiqueta CAM!!!

Pulsaremos con un clip o una llave Allen del diámetro adecuado el pulsador FEL que podéis ver en la imagen a continuación al mismo tiempo que encendemos la Sonic Pad.

Si todo ha ido bien nuestra Creality Sonic Pad estará en modo BOOT, la pantalla no mostrará imagen durante este modo.

Instalación de drivers Sonic Pad

Con la Creality Sonic Pad en modo BOOT y con el cable USB-Am/Am conectados nuestro ordenador deberá detectar un nuevo dispositivo del que probablemente no tengamos drivers, estos drivers los podemos encontrar en el PhoenixSuit descomprimido en la carpeta Drivers.

Ejemplo Windows del administrador de dispositivos y la deteccion de un dispositivo desconocido al conectar la Sonic Pad
Instalación Windows de drivers

Aplicar custom firmware (Debian) a nuestra Sonic Pad

Una vez tengamos los drivers instalados PhoenixSuit podrá aplicar el firmware custom a ella, como primer paso nos va a pedir que formateemos el dispositivo:

Una vez finalizado el proceso ya tendremos todo instalado, apagaremos la Sonic Pad y volveremos a encenderla normalmente asegurándonos que retiraremos el cable entre esta y el ordenador.

Si todo ha ido bien al encenderla veremos el logo rojo de Debian, el primer arranque puede tardar unos minutos.

Primeros pasos con custom firmware (Debian) para Sonic Pad

Ahora que ya tenemos un sistema "libre" además de la IP podemos comenzar a por conectarnos a el por SSH para realizar algunas acciones.

Conectar a la WiFi

El primer paso, si no conectamos por cable a nuestra red, será configurar la WiFi utilizando la pantalla de la Sonic Pad donde veremos el interfaz, puro, de KlipperScreen. Iremos a Menu -> Network donde veremos las redes WiFi disponibles y podemos conectarnos a una además de ver la IP asignada una vez conectados.

Conectar por SSH

Aunque tenemos más información sobre esto en nuestra guia de primeros pasos os vamos a describir brevemente el proceso.

Lo primero es importante disponer de la IP de red asignada a nuestra Sonic Pad tal como vimos en el paso anterior, esta IP la utilizaremos para configurar el acceso desde nuestro cliente SSH os aconsejamos Terminus por ser multiplataforma, sencillo y no tiene coste para el uso de administrar tus máquinas con Klipper. También dispones de otras como Putty.

Igualmente importante recordar el usuario/password que podemos utilizar, os aconsejamos utilizar sonic:

Usuario
Password

root

toor

sonic

pad

Si tenemos nuestra Sonic Pad en un entorno con acceso de red compartido os aconsejamos cambiar estos passwords por unos propios por seguridad con el comando:

sudo passwd root -> si queremos cambiarlo para el usuario root

sudo passwd sonic -> en el caso del usuario sonic

También os aconsejamos actualizar el sistema mediante el comando sudo apt-get update && sudo apt-get upgrade para asegurarnos que tenemos todo actualizado.

Kiauh

En esta distribución contamos con Kiauh que es un script que desde SSH y mediante sencillos menús nos va a permitir instalar, actualizar y eliminar componentes relacionados con Klipper.

Podremos lanzar Kiauh desde la línea de comandos de SSH lanzando ~/kiauh/kiauh.sh (el path completo por información es /home/sonic/kiauh/kiauh.sh)

Toda la información de nuestra instancia de Klipper en nuestra nueva Sonic Pad custom la vamos a encontrar en el path /home/sonic/printer_data/config

Ajuste de zona horaria

Otro ajuste recomendable es el de la zona horaria para que la información de tiempos sea siempre correcta con nuestra localización.

Para ello:

  • Podemos listar todas las zonas horarias con timedatectl list-timezones | more

  • Para ajustar nuestra Sonic Pad a una zona horaria lo haremos con timedatectl set-timezone 'Europe/Madrid'

  • Verificaremos que todo está correcto con timedatectl y reiniciaremos el sistema para que se apliquen los cambios

Acelerómetro

Para aprovechar las capacidades de Klipper con su Input Shaper, os aconsejamos leer la guía del link, y el acelerómetro que podemos instalar en nuestra Sonic Pad os vamos a explicar el proceso para poder hacer funcionar este en nuestro custom firmware.

  • Primero nos aseguramos que nuestro sistema esté completamente actualizado lanzando el siguiente comando desde nuestra linea de comandos SSH:

sudo apt update
  • Instalaremos las dependencias para poder utilizar el acelerómetro y sus componentes

 sudo apt install binutils-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib gcc-arm-none-eabi
  • Instalaremos los componentes para realizar los cálculos Input Shaper

sudo apt install python3-numpy python3-matplotlib libatlas-base-dev
  • Añadiremos el componente numpy a nuestro entorno python virtual Klipper

~/klippy-env/bin/pip install -v nump
  • Nos aseguramos que nuestro servicio Klipper MCU arranque al inicio

sudo cp ~klipper/scripts/klipper-mcu.service /etc/system/system/
  • Aplicaremos el firmware Klipper a nuestra MCU Sonic Pad para tener acceso a sus pines/componentes (como en este caso el acelerómetro)

cd ~/klipper
make clean
make menuconfig # select "linux process"
make flash
  • Ahora que ya hemos habilitado nuestra Sonic Pad como segunda MCU hemos de habilitar el acceso por parte de Klipper, añadiremos lo siguiente a nuestro printer.cfg

[mcu rpi]
serial: /tmp/klipper_host_mcu

[adxl345]
cs_pin: rpi:None
spi_speed: 2000000
spi_bus: spidev2.0

[resonance_tester]
accel_chip: adxl345
accel_per_hz: 70
probe_points:
      117.5,117.5,10

Con esto ya tenemos listo nuestra Sonic Pad para utilizar su acelerómetro. Os aconsejamos revisar nuestra guía Input Shaper para ver los siguientes pasos y ajustes.


Resolución de problemas - Errores al aplicar el firmware Klipper a la Sonic Pad para añadirla como segunda MCU

En algunos casos se pueden ver errores como el siguiente (unsupported locale setting) durante el proceso:

sonic@SonicPad:~/klipper$ make menuconfig #
Loaded configuration '/home/sonic/klipper/.config'
Traceback (most recent call last):
  File "/home/sonic/klipper/lib/kconfiglib/menuconfig.py", line 3281, in <module>
    _main()
  File "/home/sonic/klipper/lib/kconfiglib/menuconfig.py", line 661, in _main
    menuconfig(standard_kconfig(__doc__))
  File "/home/sonic/klipper/lib/kconfiglib/menuconfig.py", line 705, in menuconfig
    locale.setlocale(locale.LC_ALL, "")
  File "/usr/lib/python3.9/locale.py", line 610, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting
make: *** [Makefile:116: menuconfig] Error 1

Ejecutaremos los siguientes comandos para ajustar el locale en "en_US UTF8"

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

Resolución de problemas - Durante el proceso de cálculo de resonancias se queda en "Wait for calculations"

Normalmente en estos casos puede ser por incompatibilidades entre la versión instalada de numpy y nuestro sistema, usando una versión anterior o actualizando esta suele ser la solución.

Para utilizar una versión anterior, donde podremos especificar la versión a usar:

~/klippy-env/bin/pip install -v numpy==1.25.2

Añadir soporte USB para gcodes

Al realizar los cambios anteriores perdemos algunas de las funcionalidades que Creality integra en su firmware como es que podamos usar un USB para pasar los gcodes a nuestra máquina, algo que con Klipper no suele ser necesario salvo en determinados usos específicos por requerimiento... como por ejemplo tener la máquina en un entorno sin acceso a red.

  • El primer paso, para simplificar el proceso, es darle un nombre estándar a nuestro USB... pongamos para la guía que le llamamos USB

  • Editaremos la configuración de fstab que es el demonio que se encarga de montar unidades, esto lo haremos mediante el siguiente comando desde SSH sudo nano /etc/fstab (en la guía de primeros pasos tienes información de nano que es un editor de textos en línea de comandos para Linux) y añadiremos al final lo siguiente:

/dev/disk/by-label/USB  /home/sonic/printer_data/gcodes/USB    auto    defaults,uid=sonic      0       0
  • Crearemos un punto de montaje para ello con mkdir ~/printer_data/gcodes/USB

  • Montaremos todos los recursos sudo mount -a

Última actualización

¿Te fue útil?