<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>
<div> </div>

<div><br/>
Hello,</div>

<div><br/>
I would like to help debug and sort out an issue that SD-Cards on the phone are not read properly and that write access doesn't work. I believe that this issue has been mentioned quite a few times (I myself can verify it on 4 phones). Some of the reports about the issue I am (possibly) referring to are</div>

<div> </div>

<div>https://bugs.kde.org/show_bug.cgi?id=391464 (I commented that one already quite a bit)<br/>
https://mail.kde.org/pipermail/kdeconnect/2018-April/003476.html<br/>
https://bugs.kde.org/show_bug.cgi?id=389851<br/>
https://bugs.kde.org/show_bug.cgi?id=377058<br/>
https://bugs.kde.org/show_bug.cgi?id=380022</div>

<div> </div>

<div>=========== History what I have found so far ==============</div>

<div> </div>

<div>Let me wrap up what I believe what I have found so far. First of all we have two issues, hopefully both can get fixed with the same change.</div>

<div> </div>

<div>1) SD-card shows as empty, but if you enter a known subdirectory it shows in Dolphin<br/>
2) Cannot write to SD-card</div>

<div> </div>

<div>For number 1) I can clearly see in the debugger that the issue is the .android_secure file. The Apache sshd has an issue to read it, because Android reports back that this is not a file and there doesn't seem to be proper exception handling in sshd. If in the debugger at the right position you can skip the loop for this file and the content is shown correctly. Unfortunately it seems that all this happens purely in the Apache sshd library. I have not found a piece of code in kde-connect where I can check for this directory and skip it. Android seems to handle this directory somehow special.</div>

<div>I see that you use a very old Apache sshd. In the gradle file I see that you use version 0.8 and claim that 1.+ requires java.nio.file which doesn't exit in Android. It is there since API Level 26 https://developer.android.com/reference/java/nio/file/package-summary.html which is Android 8.0. I tried to change the code to use sshd-core 1.7 (your version is about 6 years old). Unfortunately it seems that the package was refactored quite heavily in the past 6 years. Maybe that view issue would be solved by an update to sshd-core 1.7. I am pretty sure the write issue wouldn't. Nevertheless having a 6 years old component being used can of course lead to all kind of other issues (security patches?). For know I don't want to try to update this library, maybe someone knows it well and can give this a shot.</div>

<div> </div>

<div>For number 2) I strongly believe this has to do with the Android storage access framework (SAF).</div>

<div> </div>

<div>https://developer.android.com/guide/topics/providers/document-provider.html<br/>
https://stackoverflow.com/questions/36862675/android-sd-card-write-permission-using-saf-storage-access-framework</div>

<div> </div>

<div>I can see that you seem to use the SAF when you send a file from the phone to KDE (which works fine for me). I don't see that you use SAF when you try to send a file from KDE to the phone. You seem to use everything natively within the sshd package. My understanding is that this will fail for sure for all devices Kitkat+.</div>

<div> </div>

<div>=========== What I need to know to troubleshoot this issue ==============</div>

<div> </div>

<div>Nicolas gave me in the first bug report the link to https://cgit.kde.org/kdeconnect-kde.git/about/ that is a good first step. I would like to understand the communication a bit better, of course for the case where dolphin tries to access the phone. You write that you exchange JSON files like</div>

<div> </div>

<div>{ "id": 123456789, "type": "com.example.myplugin", "body": { }, "version": 5 }</div>

<div> </div>

<div>Question 1: When in dolphin clicking on the phone device, what is the type string? (org.kde.kdeconnect.Plugins.SftpPlugin ?) What is the body?</div>

<div> </div>

<div>Question 2: I am looking for the piece of code which is executed first on the phone when I click on that device in Dolphin. I assume it is somewhere in the Apache sshd. In other words, who is the first person touching that JSON?</div>

<div> </div>

<div>Question 3: For my case I assume I only need the sftp plug-in. If my assumption in question 2 is correct, how (when and where) is the sftp plug-in being called?</div>

<div> </div>

<div>Question 4: Where in the code is this JSON being parsed the first time? (Probably the same answer as question 2?)</div>

<div> </div>

<div>So in essence I need to know the internal communication in _detail_. My idea is, once I understood that communication, to see where I can divert the communication back from the Apache sshd code to kdeconnect code. Once that is found I will try to do all the handling using SAF. I know it is not a 5 minute job...</div>

<div><br/>
Thanks so far<br/>
    Joe</div>

<div> </div>
</div></div></body></html>