Thank you for this video. I rooted my Pixel XL. installed TWRP, Lineage os 16, Linux deploy, octoprint, usb camera, kernel auditor on android. Later installed Klipper with KIAUH script. Moonraker, Fluidd, Mainsail, Klipper Screen Changed my phones power response, whenever it gets power it boots , whenever no power it shutdowns. USB camera app streams as IP Camera. I also changed a file in the kernel so phone automatically give USB autorization. So I dont need any interaction. So I can use my phone with fluidd and mainsail. With a smart plug connected to both my printer and phone I can turn on my printer remotely and turnoff. Phone boots seamless in to the klipper screen without any interaction. Camera works perfect both with fluidd and mainsail.. I think this is the best and cheap solution for klipper. I only see max 30 % CPU Utilization during fast and big print
Great work, I'm amazed how well you managed to make it so perfect. I really want to ask you a few questions, "Changed my phones power response, whenever it gets power it boots , whenever no power it shutdowns. USB camera app streams as IP Camera. I also changed a file in the kernel so phone automatically give USB automation. So I dont need any interaction. "How did you do the above? Is it convenient to provide some operation steps?
I really enjoyed this tutorial and appreciate the included English instructions on the github repository! As someone who was going to buy a specially made tablet to run Klipper I think that this will be very useful! I have a question regarding the 6th feature you list: input shaping and pressure compensation. How do you attach the accelerometer to get the necessary information for the input shaping to work? From what I understand the phone would need to be wired into the printer and the accelerometer at the same time, but I am very new to this so I could also be wrong.
I currently use ADXL345 acceleration sensor and MKS SGEN-L V1.0 printer control motherboard. I connected the ADXL345 acceleration sensor directly to the SPI pins of the MKS SGEN-L V1.0 printer control motherboard. This motherboard does not have a specially reserved SPI interface, but the SPI pins can be found on the interface connected to the screen. There are currently no problems with this connection method. If your motherboard has a dedicated SPI interface, that's even better. You can directly connect the acceleration sensor to the motherboard and then change the configuration in the configuration file.
Hi, great guide and video. But I get to the very end about the MCU serial and the bash command. I am not sure how to " Replace ttyACM0 in configuration_klipper_family.sh with the recognized device name ". I am pretty sure I know the device name, since I tried the Octo4A. But my problem is where it says to edit that bash file, I have no idea what that means. Any tips would be greatly appreciated
Hello, I'm glad to receive your approval. Which printer control motherboard are you using now? What is the CPU model? What is currently known is that motherboards that use the CH340 chip as the USB interface cannot be directly recognized by this solution. If you want to use it, you need to compile the firmware yourself, which is not recommended. Some STM32 CPUs cannot be recognized. Whether they can be recognized needs to be tested. Can you find your device in the output information after running ls -al /dev/ on your device? You can connect the printer control mainboard to execute the command once, disconnect the printer mainboard and execute the command again, and observe the difference in the output of the two commands. Being able to find your printer motherboard in Octo4A does not necessarily mean that it can be used in my solution. The reason is that Octo4A seems to come with its own driver. I have always wanted to find a way to implement the driver in Octo4A, but there has been no result. If you have clues, you can discuss it together.
It is this motherboard. And oh, I had assumed if it worked on a Pi that it probably worked on Android but this makes sense. The board is this one - Ender-3 V3 SE Mainboard Kit CR4NS200320C13_32_MS35774_GD303RET6 Controller - but I think it is incompatible and is a STM32F103, I could never find it when doing "ls -al /dev/" it never showed any new info when plugging in or unplugging, as well as me trying new commands to bash, using the known working serial and what Octo4A showed me. Funnily, when I used the weird Octo4A "/dev/bus/usb/001/002" I got the error about "mcu 'mcu': Unable to connect" but when I tried other things, I got "Klippy is not started" or whatever. So I think that "/dev/bus/usb/001/002" is the closest to being correct, or is correct, but it doesn't work anyway. And thanks for this reply, I greatly appreciate it @@峰哥爱鼓捣 Edit : I wonder if the part about using Octo4A here - github.com/d4rk50ul1/klipper-on-android - can be useful for making it work?
So I did what it said with the Octo4A, Mounts and paths, changed the printer.cfg to what it said, gave Klipper the permissions with "sudo chmod 777 /home/android/octo4a/serialpipe" and skipped the rest (the scripts, since yours already had those), and it works perfectly as it should on my ZTE Axon 7. I didn't actually try printing with it yet but this phone still has a battery in it so I didn't want to take it out until I could get it working. Thanks for the great guide, info and recommendation. @@峰哥爱鼓捣
@@bettergamingchairwins2442Hi, inwant to know if what you did work or if you happen to find a way around the issue? I also have a Ender 3 v3 SE and i wanted to take a crack on giving this machine a klipper overhaul too
Hi, thank you so much for your tutorial. I have a problem: if I restart my printer while klipper is active, I am not able to restart klipper (mcu issue). The only solution I have is to restart my Android device. Do you have this problem? If so, do you have a solution? Thank you so much for your great work
Are you saying that you cannot connect to the printer control board again after restarting the klipper service in the web interface? If so, I'm not currently experiencing this problem. However, if the main board of the printer is restarted alone during the running process or the connection with the MCU of the main board of the printer is lost due to other reasons, then the same problem as you will appear even if the klipper service is restarted. At this time, you need to restart the Android phone to connect. I guess it is because the Android system did not refresh the MCU status again when the klipper was restarted after the motherboard MCU was disconnected from the Android phone. Since this situation doesn't happen very often, I haven't delved into the solution. According to the operating principle of the entire system, if the MCU has been disconnected from the Android system, the MCU status can only be recognized again by restarting the Android system. After all, in this solution, klipper runs on the basis of the Android system, and the hardware driver is also based on Android.
@@峰哥爱鼓捣 Thank you for your detailed answer. I’m quite surprised when you say this doesn’t happen very often. I thought that when people don’t use their 3D printer, they turn off their 3D printer but the Android device stays on. So you mean people used to turn off the Android device too?
@@baptisteveuchau I've changed my android phone to run directly from the printer's power supply. The battery has been removed by me, and turning off the printer means turning off the Android phone at the same time. So, the situation you're experiencing doesn't happen very often on my device. Your Android phone has not been modified for power supply, right? Sorry I didn't know this before. However, in the usage scenario of Android klipper, I don't think it makes any sense to keep the Android phone on after the printer is turned off.
Hello, @JVDColin. You need to confirm the CPU model of your printer motherboard and whether its USB interface is converted using the CH340 chip. Some STM32 series CPUs and all motherboards that use CH340 as the USB interface cannot use this solution to install klipper. Because the native Android kernel is not enabled by default or there is no relevant driver at all. This is the biggest difference from the general Linux system.
Amazing tutorial. However, I have the following issue and hoping to get your help on this. The Linux Deploy has been setup as guided, but the Debian architecture doesnt get installed. Upon hitting "Install", the screen displays (>>> deploy &
Can you provide the model of your mobile phone and the version of Android system you are using? And, what method does the Android system use to obtain root privileges? The reason for this phenomenon is likely to be the incompatibility between the kernel of the Android system and the Debian system or the container virtualized by linuxdeploy. If this is the case, you can only try to change the Android system version.
@@峰哥爱鼓捣 hi.. i am using Samsung Galaxy S8 with Android 9 (pie). I have used the TWRP method to access the root privilege. I also had the thought of re rooting the phone so doing it right now. Will surely update you once I succeed 😊
Hello, thanks you for your work, you mention MKS SGEN-L V1.0 mainboard, i have a sidewinder x1 which i think has MKS GEN-L V1.0 , is it possible to make it work too please ?
Most likely, no. Because as far as I know, the motherboard "MKS GEN-L V1.0" uses the CH340 chip as a bridge for USB and CPU communication. The current klipper installation solution is because the Android kernel does not enable the driver for this chip by default, so the mobile phone cannot communicate with "MKS GEN-L V1.0". There is a solution to this problem, but it requires compiling the Android kernel and replacing the original kernel. I have not studied this solution in depth, and the kernel of each model of mobile phone is different, so the specific steps for compiling the kernel are not universal. If you are interested, you can research it. If you succeed, please share your joy. Thanks for the support, bro.
@@峰哥爱鼓捣 Thanks for the informations, i will search but i don't think i will be able to do such a job unfortunately. Still you did an amazing job, congrats
Hey I'm using a Samsung sm-g955f and when I try to run any of the commands like "sudo apt update" I get an instant reply "killed" Any idea how I can fix this?
@@峰哥爱鼓捣 It doesn't give me an error message. It just says killed as soon as send the command, almost as if it's being denied or something. sudo apt update killed
@@SwiftCookie This problem may be caused by insufficient system resources. Please confirm your phone's memory usage. Insufficient compatibility of some Android kernels with linuxdeploy can also cause this problem. It is recommended to try to replace the Android system, such as finding a compatible AOSP.
@@峰哥爱鼓捣 You got discord? so we can discuss there.Basically I got three devices lenovo k6 power,moto e3 power and samsung galaxy core 2 duo but non of them connecting to printer as likely i think i have to edit android kernel of that device to enable CH341 driver So you know how to do that? i got source files (all devices are rooted and custom ROM)
@@BassBoostedWorld My motherboard model is MKS SGEN-L V2.1, and the CPU model it uses is LPC1768, which can be directly recognized and driven by the Android system. It is said that because it was once widely used as a car chip, as we all know, most of the current car systems are developed and customized based on the Android system. So maybe the Android system has a built-in driver.
Thank you for this video. I rooted my Pixel XL. installed TWRP, Lineage os 16, Linux deploy, octoprint, usb camera, kernel auditor on android. Later installed Klipper with KIAUH script. Moonraker, Fluidd, Mainsail, Klipper Screen
Changed my phones power response, whenever it gets power it boots , whenever no power it shutdowns. USB camera app streams as IP Camera. I also changed a file in the kernel so phone automatically give USB autorization. So I dont need any interaction.
So I can use my phone with fluidd and mainsail. With a smart plug connected to both my printer and phone I can turn on my printer remotely and turnoff. Phone boots seamless in to the klipper screen without any interaction. Camera works perfect both with fluidd and mainsail..
I think this is the best and cheap solution for klipper. I only see max 30 % CPU Utilization during fast and big print
Great work, I'm amazed how well you managed to make it so perfect. I really want to ask you a few questions, "Changed my phones power response, whenever it gets power it boots , whenever no power it shutdowns. USB camera app streams as IP Camera. I also changed a file in the kernel so phone automatically give USB automation. So I dont need any interaction. "How did you do the above? Is it convenient to provide some operation steps?
@@峰哥爱鼓捣
drive.google.com/file/d/1uUzF2c0uePG19o_DccpmN-v71-_MBa48/view?usp=sharing
SystemUI.apk is phone specific. It is in your phone .
一键脚本挺好,方便了小白用户。
感谢
I really enjoyed this tutorial and appreciate the included English instructions on the github repository! As someone who was going to buy a specially made tablet to run Klipper I think that this will be very useful!
I have a question regarding the 6th feature you list: input shaping and pressure compensation. How do you attach the accelerometer to get the necessary information for the input shaping to work? From what I understand the phone would need to be wired into the printer and the accelerometer at the same time, but I am very new to this so I could also be wrong.
I currently use ADXL345 acceleration sensor and MKS SGEN-L V1.0 printer control motherboard. I connected the ADXL345 acceleration sensor directly to the SPI pins of the MKS SGEN-L V1.0 printer control motherboard. This motherboard does not have a specially reserved SPI interface, but the SPI pins can be found on the interface connected to the screen. There are currently no problems with this connection method. If your motherboard has a dedicated SPI interface, that's even better. You can directly connect the acceleration sensor to the motherboard and then change the configuration in the configuration file.
For this video, you deserve a sub!
thank you for your support. Glad this video helped you.
您好喔,感謝分享做法~
我也去弄了一隻小米2S來安裝Klipper,
但是光是要刷機就卡住了,
能請教您小米2S需要解鎖Bootloader嗎?
網路上許多資源都已經斷聯,
能麻煩您提供一下刷機包嗎?
非常抱歉这么久了才回复,刚看到信息。小米2s不需要解锁Bootloader,它没有Bootloader锁,直接刷机就可以。
drive.google.com/drive/folders/15pWX5QolgwFj7ZWg8mysRCOCg-uwswJB?usp=drive_link
这是小米2s的刷机包。里边有3个文件,先通过fastboot模式刷入twrp。然后进twrp后同时刷入另外两个文件。刷机后打开手机的开发者模式,里面就会有开启root的选项。
@@峰哥爱鼓捣 十分感謝您的協助,我再來去試試看
好的,祝成功。有问题随时联系。@@ArcticSeal1217
重刷9.0的mokee还是一样的。安装linuxdeploy有一项dpkg-query:没有找到与grub-*匹配的软件包。,这个有影响吗?
Hi, great guide and video. But I get to the very end about the MCU serial and the bash command. I am not sure how to " Replace ttyACM0 in configuration_klipper_family.sh with the recognized device name ". I am pretty sure I know the device name, since I tried the Octo4A. But my problem is where it says to edit that bash file, I have no idea what that means. Any tips would be greatly appreciated
Hello, I'm glad to receive your approval. Which printer control motherboard are you using now? What is the CPU model? What is currently known is that motherboards that use the CH340 chip as the USB interface cannot be directly recognized by this solution. If you want to use it, you need to compile the firmware yourself, which is not recommended. Some STM32 CPUs cannot be recognized. Whether they can be recognized needs to be tested.
Can you find your device in the output information after running ls -al /dev/ on your device? You can connect the printer control mainboard to execute the command once, disconnect the printer mainboard and execute the command again, and observe the difference in the output of the two commands.
Being able to find your printer motherboard in Octo4A does not necessarily mean that it can be used in my solution. The reason is that Octo4A seems to come with its own driver. I have always wanted to find a way to implement the driver in Octo4A, but there has been no result. If you have clues, you can discuss it together.
It is this motherboard. And oh, I had assumed if it worked on a Pi that it probably worked on Android but this makes sense. The board is this one - Ender-3 V3 SE Mainboard Kit CR4NS200320C13_32_MS35774_GD303RET6 Controller - but I think it is incompatible and is a STM32F103, I could never find it when doing "ls -al /dev/" it never showed any new info when plugging in or unplugging, as well as me trying new commands to bash, using the known working serial and what Octo4A showed me. Funnily, when I used the weird Octo4A "/dev/bus/usb/001/002" I got the error about "mcu 'mcu': Unable to connect" but when I tried other things, I got "Klippy is not started" or whatever. So I think that "/dev/bus/usb/001/002" is the closest to being correct, or is correct, but it doesn't work anyway. And thanks for this reply, I greatly appreciate it @@峰哥爱鼓捣
Edit : I wonder if the part about using Octo4A here - github.com/d4rk50ul1/klipper-on-android - can be useful for making it work?
This solution is feasible, you can try it.🙂
So I did what it said with the Octo4A, Mounts and paths, changed the printer.cfg to what it said, gave Klipper the permissions with "sudo chmod 777 /home/android/octo4a/serialpipe" and skipped the rest (the scripts, since yours already had those), and it works perfectly as it should on my ZTE Axon 7. I didn't actually try printing with it yet but this phone still has a battery in it so I didn't want to take it out until I could get it working.
Thanks for the great guide, info and recommendation. @@峰哥爱鼓捣
@@bettergamingchairwins2442Hi, inwant to know if what you did work or if you happen to find a way around the issue? I also have a Ender 3 v3 SE and i wanted to take a crack on giving this machine a klipper overhaul too
Hi, thank you so much for your tutorial.
I have a problem: if I restart my printer while klipper is active, I am not able to restart klipper (mcu issue). The only solution I have is to restart my Android device. Do you have this problem? If so, do you have a solution?
Thank you so much for your great work
Are you saying that you cannot connect to the printer control board again after restarting the klipper service in the web interface? If so, I'm not currently experiencing this problem.
However, if the main board of the printer is restarted alone during the running process or the connection with the MCU of the main board of the printer is lost due to other reasons, then the same problem as you will appear even if the klipper service is restarted. At this time, you need to restart the Android phone to connect.
I guess it is because the Android system did not refresh the MCU status again when the klipper was restarted after the motherboard MCU was disconnected from the Android phone. Since this situation doesn't happen very often, I haven't delved into the solution.
According to the operating principle of the entire system, if the MCU has been disconnected from the Android system, the MCU status can only be recognized again by restarting the Android system. After all, in this solution, klipper runs on the basis of the Android system, and the hardware driver is also based on Android.
@@峰哥爱鼓捣 Thank you for your detailed answer. I’m quite surprised when you say this doesn’t happen very often. I thought that when people don’t use their 3D printer, they turn off their 3D printer but the Android device stays on. So you mean people used to turn off the Android device too?
@@baptisteveuchau I've changed my android phone to run directly from the printer's power supply. The battery has been removed by me, and turning off the printer means turning off the Android phone at the same time. So, the situation you're experiencing doesn't happen very often on my device.
Your Android phone has not been modified for power supply, right? Sorry I didn't know this before.
However, in the usage scenario of Android klipper, I don't think it makes any sense to keep the Android phone on after the printer is turned off.
great work, thank you
You're welcome, glad the video was helpful to you.
在安装debian系统这一环节卡住了。无法接上服务器,是服务器出问题了吗
选的哪个版本的debian系统?服务器地址是用的带cn的那个吗?人在国内的话用带cn的那个地址,在国外的话用不带cn的地址。另外,最近我发现通往外网的网络时常出现断链的问题,DNS经常解析失效。你多试几遍,如果不行,只能等过段时间再试了。
Hello, I see you use the MKS SGEN-L V1.0 mainboard, I have an Ender 3 v2 with default Creality Ender 3 V2 V4.2.2 mainboard, would this still work?
Hello, @JVDColin.
You need to confirm the CPU model of your printer motherboard and whether its USB interface is converted using the CH340 chip.
Some STM32 series CPUs and all motherboards that use CH340 as the USB interface cannot use this solution to install klipper. Because the native Android kernel is not enabled by default or there is no relevant driver at all. This is the biggest difference from the general Linux system.
Amazing tutorial. However, I have the following issue and hoping to get your help on this. The Linux Deploy has been setup as guided, but the Debian architecture doesnt get installed. Upon hitting "Install", the screen displays (>>> deploy &
I have posted the issue on Github as well for your reference.
Can you provide the model of your mobile phone and the version of Android system you are using? And, what method does the Android system use to obtain root privileges?
The reason for this phenomenon is likely to be the incompatibility between the kernel of the Android system and the Debian system or the container virtualized by linuxdeploy. If this is the case, you can only try to change the Android system version.
@@峰哥爱鼓捣 hi.. i am using Samsung Galaxy S8 with Android 9 (pie). I have used the TWRP method to access the root privilege. I also had the thought of re rooting the phone so doing it right now. Will surely update you once I succeed 😊
@@峰哥爱鼓捣 Hi I managed to fix the issue by re rooting my phone with LineageOS
@@sachinsawant4482 That's great, congratulations.
填上用户名和密码,点击连接报错:unable to ressolve hotst 'print3D登录linuxdeploy': connection failed.,希望指点一下,谢谢
能ping通ip吗?很大可能是ssh没有安装成功造成的。需要更换安卓版本,主要是内核版本与linuxdeploy不兼容导致的。
@@峰哥爱鼓捣 可是安装过程没有报错,ping 不通。内核是魔趣ROM(安卓11)。.怎么能联系上你,非常希望得到你的帮助
@@19786310 在电脑上都ping不通你手机ip吗?在国内的话你可以加QQ群:562651128 交流。
Hello, thanks you for your work, you mention MKS SGEN-L V1.0 mainboard, i have a sidewinder x1 which i think has MKS GEN-L V1.0 , is it possible to make it work too please ?
Most likely, no. Because as far as I know, the motherboard "MKS GEN-L V1.0" uses the CH340 chip as a bridge for USB and CPU communication. The current klipper installation solution is because the Android kernel does not enable the driver for this chip by default, so the mobile phone cannot communicate with "MKS GEN-L V1.0". There is a solution to this problem, but it requires compiling the Android kernel and replacing the original kernel. I have not studied this solution in depth, and the kernel of each model of mobile phone is different, so the specific steps for compiling the kernel are not universal. If you are interested, you can research it. If you succeed, please share your joy. Thanks for the support, bro.
@@峰哥爱鼓捣 Thanks for the informations, i will search but i don't think i will be able to do such a job unfortunately. Still you did an amazing job, congrats
整合包的小米刷机文件是刷手机系统的吗
那个文件只是用在小米2S上的。
@@峰哥爱鼓捣 我的也是小米2S
@@taozhang1514 不好意思,刚想起来我最初并没有上传小米2S的文件。你说的是哪个整合包?
@@峰哥爱鼓捣 MK90.0-aries的文件,我已经把手机系统刷成魔趣9.0了,Xerver也稳定运行了,感谢
@@taozhang1514 那太好了。恭喜😀
QQ终于能上了,我加了群,麻烦通过。谢谢
已经通过了。
呵呵,刚ping能通了。但Xshell还是一样的,Q很久很久没上了,有V吗?ROOT权限我是用的magiker,用TWRP刷的。是否有影响?
可能安卓版本太高了,换低些的版本试试。如果能ping通,但是连不上ssh的话,一般都是安卓内核与Linuxdeploy兼容不好导致的ssh安装失败。换安卓版本试试吧。
安装了多次,存在的问题是ssh启动失败、x11启动失败,armhf系列安装包下载不了安装不上,我用的是国内镜像有问题,下载原版国外镜像安装问题依旧
尝试更换安卓系统版本,尤其是内核版本。出现这些问题一般都是内核不兼容导致的。
@@峰哥爱鼓捣 你小米手机的内核是魔趣吗,我用原版的小米开翻版不行
@@taozhang1514 是的。用的魔趣9,目前一直在用,没什么问题。
十分崩溃,还是不行
@@taozhang1514 什么机型?每种机型合适的安卓版本和内核版本都不一样,并不是用魔趣就可以。
Hey I'm using a Samsung sm-g955f and when I try to run any of the commands like "sudo apt update" I get an instant reply "killed"
Any idea how I can fix this?
Can you copy all the error messages here to further confirm the problem?
@@峰哥爱鼓捣 It doesn't give me an error message. It just says killed as soon as send the command, almost as if it's being denied or something.
sudo apt update
killed
@@SwiftCookie Can other commands be executed normally?
@@峰哥爱鼓捣 Nah they all get killed instantly
@@SwiftCookie This problem may be caused by insufficient system resources. Please confirm your phone's memory usage. Insufficient compatibility of some Android kernels with linuxdeploy can also cause this problem. It is recommended to try to replace the Android system, such as finding a compatible AOSP.
手机和视频一样,启动Xerver显示 error x server failed to launch
是版本和安卓系统不兼容造成的。解决办法要么换安卓系统,要么找另外一个版本的xserver试试。
如何解决手机供电??充电口被占了
视频里有讲的如何该电池供电。
求救
我跑完最後的.sh後重開,並沒有自動啟動 KlipperScreen,也不知道怎麼啟動 KlipperScreen,
接上 printer ,USB對應到的路徑是 /dev/bus/usb/001/003,但連不上
依赖的组件,xserver安装了吗?另外,如果没有ttyACM设备的话是无法连接的。你是用的什么打印机控制板?
@峰哥爱鼓捣 XServer-XSDL嗎?有安裝!
我的機器是 ANYCUBIC MEGA-S ,用樹莓派可以認到,並且在 /dev/serials 能夠看到設備序號並連線,
但是用 Android 手機則連不上,用 lsusb 可以看到裝置
@@峰哥爱鼓捣 KlipperScreen能顯示了,圖形介面沒設置好,調整好就行了,剩MCU連不上
@@chihlungchen361 ls /dev/ 命令输出的设备里能找到ttyACM设备吗?如果不能,那么可能有两种情况,一种是手机端没有ttyACM驱动,另一种是手机端有ttyACM驱动但是打印机的主板不支持。这个方案与树莓派方案在设备连接上用到不是一种方法,树莓派是标准linux系统,而手机不是,所以和树莓派有区别。主要是查看 /dev/ 路径下有没有ttyACM 之类的设备。没有就无法连接。
I need help
what happened?
@@峰哥爱鼓捣 You got discord? so we can discuss there.Basically I got three devices lenovo k6 power,moto e3 power and samsung galaxy core 2 duo but non of them connecting to printer as likely i think i have to edit android kernel of that device to enable CH341 driver So you know how to do that? i got source files (all devices are rooted and custom ROM)
@@BassBoostedWorld I also don't know how to compile the kernel, but I plan to learn it.
@@峰哥爱鼓捣 oh okay but how your phone got connected to printer easily?
@@BassBoostedWorld My motherboard model is MKS SGEN-L V2.1, and the CPU model it uses is LPC1768, which can be directly recognized and driven by the Android system.
It is said that because it was once widely used as a car chip, as we all know, most of the current car systems are developed and customized based on the Android system. So maybe the Android system has a built-in driver.