安卓手机运行 Klipper 补充:the easy way
## 前言心情不好,简单记录一下。之前测试了 octo4a 安装 Klipper,不需要 root 权限,不需要重新编译内核添加串口模块驱动,所以手机上运行 Klipper全家桶肯定可以更简单。之前没用过 chroot,下面很多内容说的肯定不对,看了 (https://space.bilibili.com/10231423) 的一些视频,说一下几点:
1. Anlinux 有段时间不更新了,安装的是 Debian Buster,习惯了 Bullseye 的朋友可以尝试 `proot-distro` 工具。
```shell
# 安装 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 属于是
## 我的方法
!(https://ghproxy.com/https://github.com/danpeig/Johnny-Five-Android-Termux/raw/master/Johnny-Five-Android-Termux.PNG)
大概就是上图那个意思:
UsbSerial ——> TCP Server——> Linux Device——> Klipper
优点是简单,不需要安装臃肿的 octo4a,唯一要注意的是创建虚拟设备,一是转发 TCP 包,二是与 Klippy 交互。
### Step 1 识别串口设备并打开 TCP 数据转发
下载 (https://play.google.com/store/apps/details?id=com.hardcodedjoy.tcpuart)
!(https://cdn.jsdelivr.net/gh/sjqlwy/blog_imgs@default/images/20220416011227.png)
!(https://cdn.jsdelivr.net/gh/sjqlwy/blog_imgs@default/images/20220416011005.png)
### Step 2 创建虚拟设备,开启 TCP 数据转发
这一步方便被 Klippy 调用,总不能访问 IP 地址吧
```shell
socat -d -d pty,link=/tmp/tcpserial,raw,echo=0,waitslave tcp:localhost:8080
```
* 原本按部就班创建到 /dev 目录下,需要手机 root 才能访问
* 转念一想,Linux下皆是文件,创建到一个谁都能访问的地方得了
### Step3 简单测试读写
短接 Rx-Tx
```shell
cat /tmp/tcpserial
echo HelloWorld! > /tmp/tcpserial
```
!(https://cdn.jsdelivr.net/gh/sjqlwy/blog_imgs@default/images/20220416012111.png)
### 验证Klipper全家桶是否需要root权限
为了严谨,安装了一遍,暂时没发现。
## 参考
* (https://github.com/danpeig/Johnny-Five-Android-Termux)
* (https://github.com/RfidResearchGroup/proxmark3) 华为手机 识别不到ch340G芯片,楼主能分析下原因吗 我是zz 发表于 2022-5-23 09:50
华为手机 识别不到ch340G芯片,楼主能分析下原因吗
首先你手机支持otg吗,其次,什么识别不到,怎么知道没识别到的 大佬,最近我也在研究安卓手机作为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: 主机关闭
求大佬指点 技术不宅 发表于 2022-5-31 08:36
大佬,最近我也在研究安卓手机作为klipper上位机,目前的方案是华为P20手机安装Termux,建立proot容器,用o ...
Ternux不支持systemd管理启动服务,手动后台执行或者创建SysInitV服务。具体不再赘述,不看好手机上位机,想说的都在文章里了 pATAq 发表于 2022-6-1 19:36
Ternux不支持systemd管理启动服务,手动后台执行或者创建SysInitV服务。具体不再赘述,不看好手机上位机 ...
感谢大佬,读了您之前的文章,感觉确实不太好弄,已经转向虚拟机和miniPC方向了 大佬 能不能提供下TCPUART transparent Bridge软件 翻不了墙下不了 本帖最后由 淑仝爸爸 于 2022-10-8 06:28 编辑
昨天使用octo4a-1.1.2连接Ender3 S1 Pro(STM32F401)成功 淑仝爸爸 发表于 2022-10-8 06:17
昨天使用octo4a-1.1.2连接Ender3 S1 Pro(STM32F401)成功
棒 太赞了! 棒!!! 请问楼主的klipper 是直接在termux运行,还是通过安装Linux运行klipper 另外,请问,数据流向是这样吗?
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,这个虚拟的设备
厉害!! 好棒的教程!
页:
[1]