williamfzc / pyminitouch

python wrapper of minitouch, for better experience
https://pyminitouch.readthedocs.io
MIT License
125 stars 25 forks source link

Permission denied #29

Closed leele2 closed 7 months ago

leele2 commented 7 months ago

`

2024-02-01 19:08:46.174 | INFO | pyminitouch.utils:is_device_connected:56 - device Redmi Note 8 online 2024-02-01 19:08:46.174 | INFO | pyminitouch.connection:init:87 - searching a usable port ... 2024-02-01 19:08:48.179 | INFO | pyminitouch.connection:init:89 - device 17047ea2 bind to port 20739 2024-02-01 19:08:48.347 | INFO | pyminitouch.connection:get_abi:35 - device 17047ea2 is arm64-v8a ls: /data/local/tmp/katana-e4a04767ff49f2a3c49a9430b2e917c9: Permission denied Traceback (most recent call last): File "c:\Users\dj-lu\OneDrive\Documents\Coding\PythonScripts\BeatStar\somefile.py", line 5, in device = MNTDevice(_DEVICE_ID) File "C:\Users\dj-lu\anaconda3\lib\site-packages\pyminitouch\actions.py", line 117, in init self.start() File "C:\Users\dj-lu\anaconda3\lib\site-packages\pyminitouch\actions.py", line 125, in start self.server = MNTServer(self.device_id) File "C:\Users\dj-lu\anaconda3\lib\site-packages\pyminitouch\connection.py", line 92, in init self.installer = MNTInstaller(device_id) File "C:\Users\dj-lu\anaconda3\lib\site-packages\pyminitouch\connection.py", line 26, in init if self.is_mnt_existed(): File "C:\Users\dj-lu\anaconda3\lib\site-packages\pyminitouch\connection.py", line 57, in is_mnt_existed file_list = subprocess.check_output( File "C:\Users\dj-lu\anaconda3\lib\subprocess.py", line 424, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "C:\Users\dj-lu\anaconda3\lib\subprocess.py", line 528, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['adb', '-s', '17047ea2', 'shell', 'ls', '/data/local/tmp']' returned non-zero exit status 1. (base) PS C:\Users\dj-lu\OneDrive\Documents\Coding\PythonScripts\BeatStar>

`

Also get the same issue with normal mini touch:

`C:\Users\dj-lu\OneDrive\Documents\Coding\PythonScripts\BeatStar\minitouch>adb shell getprop ro.product.cpu.abi | tr -d '\r' arm64-v8a

C:\Users\dj-lu\OneDrive\Documents\Coding\PythonScripts\BeatStar\minitouch>adb push libs/arm64-v8a/minitouch /data/local/tmp/ libs/arm64-v8a/minitouch: 1 file pushed, 0 skipped. 3.1 MB/s (25784 bytes in 0.008s)

C:\Users\dj-lu\OneDrive\Documents\Coding\PythonScripts\BeatStar\minitouch>adb shell /data/local/tmp/minitouch -h /system/bin/sh: /data/local/tmp/minitouch: can't execute: Permission denied`

Getting the same error on two devices: Non-rooted Pixel 7 Pro Rooted Redmi Note 8

williamfzc commented 7 months ago

Try giving permission by executing chmod +x /data/local/tmp/minitouch ?

leele2 commented 7 months ago

Try giving permission by executing chmod +x /data/local/tmp/minitouch ?

Thanks that seems to have fixed the permision issue with minitouch for my rooted device.

C:\Users\dj-lu>adb shell /data/local/tmp/minitouch open: Permission denied Unable to open device /dev/input/event6 for inspectionopen: Permission denied Unable to open device /dev/input/event5 for inspectionopen: Permission denied Unable to open device /dev/input/event4 for inspectionopen: Permission denied Unable to open device /dev/input/event1 for inspectionopen: Permission denied Unable to open device /dev/input/event0 for inspectionopen: Permission denied Unable to open device /dev/input/event2 for inspectionopen: Permission denied Unable to open device /dev/input/event3 for inspectionUnable to find a suitable touch device connecting socket: Connection refused

C:\Users\dj-lu>adb shell ginkgo:/ $ su ginkgo:/ # /data/local/tmp/minitouch Type B touch device NVTCapacitiveTouchScreen (1079x2339 with 10 contacts) detected on /dev/input/event2 (score 22597)

Still having permision denied through pyminitouch though, now getting the following error:

ls: /data/local/tmp/katana-e4a04767ff49f2a3c49a9430b2e917c9: Permission denied

Tried the following but no luck:

C:\Users\dj-lu>adb shell chmod +x /data/local/tmp/katana-e4a04767ff49f2a3c49a9430b2e917c9 chmod: /data/local/tmp/katana-e4a04767ff49f2a3c49a9430b2e917c9: Permission denied

Command ran when I elevated to root, but still permision denied when running pyminitouch

leele2 commented 7 months ago

Today I tried granting adb root access via modifying my build.prob file to include

ro.debuggable=1 ro.secure=0

This unfortunately didn't solve my issues, and I am still getting permission denied. Is anyone else having the same issue?

EDIT:

I deleted the folder /data/local/tmp/katana-e4a04767ff49f2a3c49a9430b2e917c9

Upon running I now get the following error

open: Permission denied
Unable to open device /dev/input/event6 for inspectionopen: Permission denied
Unable to open device /dev/input/event5 for inspectionopen: Permission denied
Unable to open device /dev/input/event4 for inspectionopen: Permission denied
Unable to open device /dev/input/event2 for inspectionopen: Permission denied
Unable to open device /dev/input/event1 for inspectionopen: Permission denied
Unable to open device /dev/input/event0 for inspectionopen: Permission denied
Unable to open device /dev/input/event3 for inspectionUnable to find a suitable touch device
connecting socket: Connection refused

Seems granting SU to adb didn't work?

C:\Users\dj-lu>adb shell /data/local/tmp/minitouch
open: Permission denied
Unable to open device /dev/input/event6 for inspectionopen: Permission denied
Unable to open device /dev/input/event5 for inspectionopen: Permission denied
Unable to open device /dev/input/event4 for inspectionopen: Permission denied
Unable to open device /dev/input/event2 for inspectionopen: Permission denied
Unable to open device /dev/input/event1 for inspectionopen: Permission denied
Unable to open device /dev/input/event0 for inspectionopen: Permission denied
Unable to open device /dev/input/event3 for inspectionUnable to find a suitable touch device
connecting socket: Connection refused

C:\Users\dj-lu>adb shell
ginkgo:/ $ su
ginkgo:/ # /data/local/tmp/minitouch
Type B touch device NVTCapacitiveTouchScreen (1079x2339 with 10 contacts) detected on /dev/input/event2 (score 22597)
leele2 commented 7 months ago

Manage to fix the issue following the following steps. (I'm using android 10+)

After building the app with:

gradle gradlew installDebug

Install the application using:

ADB install C:\<path to folder>\STFService.apk\app\build\outputs\apk\debug\app-debug.apk

Now start the service, note that Oreo (26+) requires services in the foreground, thus use the following:

adb shell am start-foreground-service --user 0 -a jp.co.cyberagent.stf.ACTION_START -n jp.co.cyberagent.stf/.Service

or if getting user error,

adb shell am start-foreground-service -a jp.co.cyberagent.stf.ACTION_START -n jp.co.cyberagent.stf/.Service

then follow the rest of the steps

Note, you will still get permission denied, but pyminitouch will then connect via the STF socket.

open: Permission denied
Unable to open device /dev/input/event6 for inspectionopen: Permission denied
Unable to open device /dev/input/event5 for inspectionopen: Permission denied
Unable to open device /dev/input/event4 for inspectionopen: Permission denied
Unable to open device /dev/input/event1 for inspectionopen: Permission denied
Unable to open device /dev/input/event2 for inspectionopen: Permission denied
Unable to open device /dev/input/event0 for inspectionopen: Permission denied
Unable to open device /dev/input/event3 for inspectionUnable to find a suitable touch device
using Android InputManager
Connection established

device.tap([(400, 600)])
2024-02-09 18:13:58.088 | INFO     | pyminitouch.actions:publish:63 - send operation: d 0 400 600 100\nc\nu 0\nc\n

Be sure that the socket is running before calling pyminitouch