安卓手机运行 Klipper 补充:the easy way

2022-04-157.9万
AI 快速预览详细 收起
本文介绍了如何在安卓手机上运行Klipper全家桶,无需root权限和编译内核驱动模块。通过使用Termux和proot-distro工具,可以轻松实现对3D打印机的控制。首先,使用proot-distro安装Debian系统,然后通过TCPUART透明桥接和socat创建虚拟设备,解决USB串口设备访问问题。最后,验证Klipper全家桶是否需要root权限。这种方法简化了3D打印控制流程,适用于需要便捷解决方案的用户。

前言

心情不好,简单记录一下。之前测试了 octo4a 安装 Klipper,不需要 root 权限,不需要重新编译内核添加串口模块驱动,所以手机上运行 Klipper全家桶肯定可以更简单。之前没用过 chroot,下面很多内容说的肯定不对,看了 SYZ-Channel 的一些视频,说一下几点:

  1. Anlinux 有段时间不更新了,安装的是 Debian Buster,习惯了 Bullseye 的朋友可以尝试 proot-distro 工具。

    # 安装 Debian
    proot-distro install debian
    # 以 root 用户登陆
    proot-distro login debian
    # 以 pi 用户登陆
    proot-distro login debian --user pi
  2. Termux 可以用 tsu 或者 termux-sudo 获取root权限。此外,这个 root 权限是指操作硬件设备的权限,如果不获取,虽然可以执行 apt 等操作,但是无法访问 /dev 设备

  3. proot 出来的 debian 系统不是使用 systemd 进行管理,似乎是 Android 的问题,所以视频中把运行 Klipper 全家桶的命令手动复制出来执行。

优点:

  • 无需手机 root
  • 无需编译内核驱动模块
  • 无需安装 octo4a
  • TCP 数据在内部传输,不怕传输速率和信号不稳定

另辟蹊径访问 USB 串口设备

不足

  • octo4a 似乎不支持 stm32 模拟出来的 USB 串口设备,这就很麻烦,因为目前市面上的都是 stm32 主板。
  • 视频中借助 octo4a,并且需要 root 权限来访问串口设备,有点太臃肿了,又装了个 termux + octoprint 属于是

我的方法

Image

大概就是上图那个意思:

UsbSerial ——> TCP Server  ——> Linux Device  ——> Klipper

优点是简单,不需要安装臃肿的 octo4a,唯一要注意的是创建虚拟设备,一是转发 TCP 包,二是与 Klippy 交互。

Step 1 识别串口设备并打开 TCP 数据转发

下载 TCPUART transparent Bridge

image-20220416011227041

image-20220416010958140

Step 2 创建虚拟设备,开启 TCP 数据转发

这一步方便被 Klippy 调用,总不能访问 IP 地址吧

socat -d -d pty,link=/tmp/tcpserial,raw,echo=0,waitslave tcp:localhost:8080
  • 原本按部就班创建到 /dev 目录下,需要手机 root 才能访问
  • 转念一想,Linux下皆是文件,创建到一个谁都能访问的地方得了

Step3 简单测试读写

短接 Rx-Tx

cat /tmp/tcpserial
echo HelloWorld! > /tmp/tcpserial

image-20220416012111059

验证Klipper全家桶是否需要root权限

为了严谨,安装了一遍,暂时没发现。

参考

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(10)
花生编程
花生编程
好棒的教程!
花生编程
花生编程
厉害!!

6陈tyu
6陈tyu
另外,请问,数据流向是这样吗?
tcpuart 将usb串口的数据转发到localhost:8080, 然后“socat -d -d pty,link=/tmp/tcpserial,raw,echo=0,waitslave tcp:localhost:8080”这个命令,将localhost:8080的数据在/tmp/tcpserial中读写,klipper在printer.cfg中需要填写serlial:是/tmp/tcpserial,这个虚拟的设备
6陈tyu
6陈tyu
请问楼主的klipper 是直接在termux运行,还是通过安装Linux运行klipper
三春牛-创客
三春牛-创客
棒!!!
三春牛-创客
三春牛-创客
太赞了!
淑仝爸爸
淑仝爸爸
昨天使用octo4a-1.1.2连接Ender3 S1 Pro(STM32F401)成功
pATAq
pATAq
作者
回复淑仝爸爸
flyskycs
flyskycs
大佬 能不能提供下TCPUART transparent Bridge软件 翻不了墙 下不了
技术不宅
技术不宅
大佬,最近我也在研究安卓手机作为klipper上位机,目前的方案是华为P20手机安装Termux,建立proot容器,用octo4a连接,目前直接可以识别到打印机主板,目标是也免root。
可是遇到个问题,klipper都装完了,也在Ubantu和debian9.10.11都试过,目前都是卡在了下面这个问题上
###### Restarting Moonraker...
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: 主机关闭
求大佬指点
技术不宅
技术不宅回复pATAq
感谢大佬,读了您之前的文章,感觉确实不太好弄,已经转向虚拟机和miniPC方向了
pATAq
pATAq
作者
回复技术不宅
Ternux不支持systemd管理启动服务,手动后台执行或者创建SysInitV服务。具体不再赘述,不看好手机上位机,想说的都在文章里了
我是zz
我是zz
华为手机 识别不到ch340G芯片,楼主能分析下原因吗
pATAq
pATAq
作者
回复我是zz
首先你手机支持otg吗,其次,什么识别不到,怎么知道没识别到的
- 没有更多了 -