pATAq 发表于 2022-4-16 01:27:11

安卓手机运行 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)

我是zz 发表于 2022-5-23 09:50:47

华为手机    识别不到ch340G芯片,楼主能分析下原因吗

pATAq 发表于 2022-5-23 19:07:16

我是zz 发表于 2022-5-23 09:50
华为手机    识别不到ch340G芯片,楼主能分析下原因吗

首先你手机支持otg吗,其次,什么识别不到,怎么知道没识别到的

技术不宅 发表于 2022-5-31 08:36:04

大佬,最近我也在研究安卓手机作为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 发表于 2022-6-1 19:36:37

技术不宅 发表于 2022-5-31 08:36
大佬,最近我也在研究安卓手机作为klipper上位机,目前的方案是华为P20手机安装Termux,建立proot容器,用o ...

Ternux不支持systemd管理启动服务,手动后台执行或者创建SysInitV服务。具体不再赘述,不看好手机上位机,想说的都在文章里了

技术不宅 发表于 2022-6-6 08:33:54

pATAq 发表于 2022-6-1 19:36
Ternux不支持systemd管理启动服务,手动后台执行或者创建SysInitV服务。具体不再赘述,不看好手机上位机 ...

感谢大佬,读了您之前的文章,感觉确实不太好弄,已经转向虚拟机和miniPC方向了

flyskycs 发表于 2022-10-7 11:02:08

大佬 能不能提供下TCPUART transparent Bridge软件   翻不了墙下不了

淑仝爸爸 发表于 2022-10-8 06:17:50

本帖最后由 淑仝爸爸 于 2022-10-8 06:28 编辑

昨天使用octo4a-1.1.2连接Ender3 S1 Pro(STM32F401)成功

pATAq 发表于 2022-10-11 16:37:13

淑仝爸爸 发表于 2022-10-8 06:17
昨天使用octo4a-1.1.2连接Ender3 S1 Pro(STM32F401)成功

三春牛-创客 发表于 2023-1-21 11:35:44

太赞了!

三春牛-创客 发表于 2023-1-21 11:36:58

棒!!!

6陈tyu 发表于 2023-6-24 13:15:19

请问楼主的klipper 是直接在termux运行,还是通过安装Linux运行klipper

6陈tyu 发表于 2023-6-24 13:40:40

另外,请问,数据流向是这样吗?
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,这个虚拟的设备

花生编程 发表于 2023-8-3 22:48:35

厉害!!

花生编程 发表于 2023-8-3 22:49:37

好棒的教程!
页: [1]
查看完整版本: 安卓手机运行 Klipper 补充:the easy way