Documentation
Table of Contents
RCX is an Android application that integrates cloud providers using rclone for cloud storage and Android platform interfaces for local storage.
See Bug Reporting if you encounter an issue.
Getting Started
When you open up rcx for the first time, rcx will ask you import a rclone configuration file (rclone.conf
) or create a new one by adding a remote with (+). A “remote” is a single configured cloud location in rclone.
There are various types of remotes and rcx supports all storage remotes and most of the meta-remotes like crypt that encrypts other remotes and union that combines multiple remotes. You can see all supported remote types on rclone.org. Note that you can only configure some types inside of the app, but you can always import a configuration to allow more remote types.
If you want to access storage attached to your device, like internal memory, SD cards and USB drives, you may want to use SAF
Keep in mind that rclone does not supports all features on all remotes (see optional feature matrix)- and for larger file operations, you need both a stable network connection and enough battery.
Configuration System
Config file
You can import and export rclone configuration files using the drawer menu. Almost every rclone option should be supported.
Note that importing config files is an advanced operation, and you may see errors if you have an unusual configuration.
Since the app does not (yet) support running with an encrypted configuration file, importing an encrypted config file will prompt for the password. The configuration will then be stored unencrypted in the app-private internal storage. For this reason running the app on a rooted device is discouraged.
For importing config files, you can also place a config file on exactly this path ./Android/data/io.github.x0b.rcx/files/rclone.conf
and start the import as usual. The app automatically checks this location and will prompt you if it finds a valid configuration file. This should work if the folder structure is created on any connected SD card, USB or other storage, but you may have to try a few if your device manufacturer has restricted this.
If you get the error message “No App found for this link” when trying to import the configuration file, your device is missing a critical system component (“DocumentsUI”) that manages access to storage. This mostly happens on Android TV, and you will not be able to use any functionality that relies on the Storage Access Framework. You may be able to use the manual file placement as specified above.
If local drives are missing after a config import, restart the app. If you previously exported the config file and then import it back later, rcx may display additional local drives that are not actually available since the config file does not know any difference beetween app-local remotes and remotes created by you on your computer.
Configuring remotes
In v1.11.4, you can configure the following remote types:
- Alias
- Backblaze
- Box.com
- Cache
- Crypt
- Dropbox
- FTP
- Google Drive
- Google Photos
- HTTP
- HubiC
- Local
- Mega
- Azure Blob
- OneDrive
- pCloud
- QingStor
- SFTP
- Union
- WebDAV
- Yandex Disk
Serving content
You can start a server provides your files to other apps and devices on your device or network (rclone serve
). To host a remote, select Start Server in the top-level ⋮ menu. You can also host indivial files or folders from their ⋮ menu. You can then select the server type (FTP, DLNA, HTTP or WebDAV). Note that you need to check Allow access from other devices for some apps (VLC).
Local Storage
Access to local storage
When you use rclone on your computer or server to upload and download files, rclone can use standard interfaces for its operations. On Android, access to those locations has traditionally been difficult. Between Android 4.4 and 9.0, it was generally available, but required a declaring and (Android 6+) requesting a permission. On Android 10, we need to request a special legacy flag to get access, and on Android 11 we need an additional permission, Play Policy whitelisting (not yet granted) and manual user intervention.
Because of those difficulties, current versions of the app provide two possibilities of accessing local storage: local drives and a Storage Access Framework (SAF) support.
When you start the app for the first time, rcx will automatically test access rights to local storage locations and populate the configuration list accordingly. This is also done whenever the storage configuration changes, or on the next restart after a config import.
Note: Android 11 native external does not work currently, only internal.
Adding local storage (SAF)
Feature Quality: Beta, data loss can occur but generally shouldn’t. Android 11 (“R”) does not work for storage root.
Starting in Android 10, applications no longer have direct access to user-visible file storage. As a result, rclone can no longer access your files using standard Linux file APIs and your “local” remotes won’t be very useful.
Starting in version 1.9.0, rcx features a new storage frontend/backend system that uses the Storage Access Framework, an Android 4.4+ system for managing file and file tree-like content. You must enable this feature in Settings
> File Access
>Enable SAF Client Preview
. Then you can add any SAF-accessible storage location using Add Storage
.
This will launch the system’s file manager, allowing you to grant access to any storage location.
Selecting a storage location
- Select “Add Storage”. The system file manager will open.
- Open the left hand drawer ☰. A list of storage locations be shown, depending on whether your system has a hardware SD card or a USB drive attached.
- Select a storage location by tapping the drawer item. Then, tap “SELECT SDCARD” (or similar) on the bottom to give RCX access to this storage location.
RCX will then create a new remote, local-saf
. With this remote, you can browse any storage location provided by Android. The special SAF remote supports most rclone operations, translating rclone methods on the fly into SAF methods.
Note for RCX v1.11.4: We are currently working on supporting third party providers (e.g. Termux, Seafile, Paragon NTFS, etc.).
My SD card or internal storage is not displayed in the list
On some devices, not all accessible storage locations are displayed by default. When the system file manager opens, you can tap on the right hand menu: ⋮
And then select “Show internal storage”. Afterwards, all storage locations should be visible.
App Compatibility
Note that storage provided by third party apps can currently not be correctly read by the internal rclone and is therefore inaccessible.
Full Tree Access (Intent#ACTION_OPEN_DOCUMENT_TREE)
- Android: access Internal Storage, SD cards, USB drives
- exFAT/NTFS for USB by Paragon Software - does not work.
RCX feature preview
Accessing cloud content from other apps (VCP)
Feature Quality: Preview, data loss is expected!
In addition to to reading local storage via the Storage Access Framework, a future version of rcx can allow other apps to access files on your cloud remotes from within those apps. You must enable this feature in Settings
> File Access
>Enable Content Provider Preview
. Other apps can then be granted access to cloud files, just like rcx uses these interfaces to access local content.
Please note that this feature has not yet been released because there is an increased risk of losing data and it therefore requires extensive testing. For example, move operations can corrupt your data if the underlying file stream is not transferred completely.
App Compatibility
Generally, all apps should be compatible if they have implemented SAF correctly, but the ones below were actually tested.
However, most applications seem to expect only disk-based files and therefore don’t work correctly with streamed files like rcx provides. Android 8 and above work much better here since we can hook into the system’s fuse layer and make even cloud files seem like actual files.
Full Tree Access (Intent#ACTION_OPEN_DOCUMENT_TREE)
Applications that requrest to access the whole rclone file tree. Note that document editing applications are however only really useful if they can both read and write the document file (which is not granted by default from DocumentsUI). For this functionality look in the section on single documents for more details.
- DocumentsUI (“Files” app on Android 10, “Downloads” on previous versions). Unless your file explorer proxies the file to the opening application, you have to use this to get correct permissions for the opening application.
- MediaInfo - worked with mp3, mp4 and mkv
- VLC - worked with mp3, mp4 and mkv
- Microsoft Excel - works: xlsx (readonly)
- Google Docs - works including editing, but you need to select the storage location on the first save. This location can be back on the remote. All further saves will be done automatically.
- Firefox - does not work at all
- Google Fotos - works: png
- Microsoft Word - works: docx (readonly)
- ZArchiver - does not work at all (tested zip, 7z)
- Total Commander - file browsing only, no read/write operations
Open A Single File (Intent#ACTION_OPEN_DOCUMENT)
-
OneDrive - upload stable
-
Google Docs purposefully excludes other cloud providers by passing LOCAL_ONLY. By default, rcx will claim to be LOCAL_ONLY to show up when docs requests a file. You disable this behaviour in the settings. Apart from this however, Docs works very well with the rclone provider and can open, edit and save files on any remote seamlessly, as long as the file sizes are reasonable.
-
Opening, editing and saving of documents works fine with reasonable file sizes.
Create A Single File (Intent#ACTION_CREATE_DOCUMENT)
- (none)
Search functionality
Search functionality is currently very basic. It will perform a case-insensitive contains-operation on known file paths for a remote, i.e. you can only search folders that are you have browsed before in that session which have not yet been evicted from the cache due to low ram.
If there is enough user demand other solutions might be implemented in the future, e.g. an offline index cache or similar solutions. Note however that indexing operations can be expensive in terms of api quotas (or just simply if you pay per api call) and would have to be performed regularly to pick up changes.