Obsidian sync fails for medium-size PDFs on Boox devices

Hi,

Disclaimer: I’ve had long conversations with Obsidian sync’s support team who did not manage to solve this issue and asked me to post a bug report on this forum.

Problem: Obsidian sync fails to download PDFs larger than 3-4MB to my Onyx Boox Note Air 3 C device. The download starts and is reported as successful by the sync log, but the PDF materializes as an empty 1.05MB file on my device. As a comparison, it works on my iphone and ipad, so it seems to be an android-related issue, specifically on boox devices.

Minimal reproducing test:

  1. state of my linux vault (left), iOS iPad vault (center) and android Boox vault (right) before adding PDFs to the ‘cooking’ folder:

  2. Here are the sync logs after adding 3 PDFs to the ‘cuisine’ directory on the linux vault (iOS left, android right):


  3. And finally here is the state of the PDF files on the iOS iPad (left) and android boox (right) filesystems:


As you can see, the small 1.2MB PDF synced properly, but both the 8.2MB and the 57.7MB PDFs did not get downloaded properly.

Here is the device metadata:

SYSTEM INFO:

Operating system: android 12 (QUALCOMM NoteAir3C)
Obsidian version: 1.4.16 (114)
API version: v1.4.16
Login status: logged in
Catalyst license: none

SYNC INFO:

Vault ID: (XXXX)
Host server: wss://sync-10.obsidian.md
Device name:
Allowed file types: image, pdf, video, audio, unsupported
Allowed special types: app, core-plugin, core-plugin-data
Ignored directories:
Prevent sleep: true

Thank you for your assistance!

Hello.

I wonder if the transfer crashes/goes out of memory without producing an error.

What’s the android webview version installed and can you update it?

Hey, I have that exact same problem (on the boox note air 3). Do you have any update / could you give me a link to the bug request?
@WhiteNoise if I can try anything to assist I’m happy to help. My air 3 usually has about 2gb of free ram. I do not see a webvIew version anywhere, I don’t see the Android System Webview app like on my phone.

Edit: Nevermind the link to the bug request, stupid me didn’t notice we were in it already.

Hi, I run into the same issue and it is really confusing… may I ask what is the link of the bug request you mention? thanks!

I saw this but not sure whose responsibility is this
https://www.reddit.com/r/Onyx_Boox/comments/17dr81x/autosync_cant_download_larger_files_20mb_on_note/

I don’t know now which bug request you are referring to. This thread is the bug report for Obsidian.

I’m struggling with 8mb and even 2mb. This is really weird though.

As I said before, if I can provide the Obsidian team with any info I’m happy to help!

Edit: I just tried syncing from the tablet to my pc, and it works fine in that direction. The problem is only syncing from another device to my tablet.

I confirm that this issue is still occurring as of May 2025, with the latest version of obsidian and boox firmware.

Claude Sonnet 4 suggestions, just plugging it here for potential future Obsidian devs:

The issue manifests as:

  • PDFs >3-4MB fail to sync to Boox devices (Note Air 3 C specifically)
  • Downloads appear successful in logs but result in corrupted 1.05MB files
  • Upload direction (tablet → PC) works fine
  • Other platforms (iOS, Linux) unaffected

This strongly suggests a memory allocation failure during WebView-mediated downloads on the Android subsystem, likely due to Boox’s customized Android implementation having tighter memory constraints or different WebView behavior.

Proposed Solutions

1. WebView Update/Replacement

First-line approach: Update Android System WebView if possible. Boox devices often ship with older WebView versions that have known memory handling issues. If unavailable through Play Store, consider sideloading a newer version.

EDIT: I’ve tried updating the android system webview (with great difficulty to override the native baked-in version from boox), to no avail.

2. Chunked Download Implementation

Obsidian should implement streaming/chunked downloads for files >2MB on Android:

// Pseudo-implementation
async function downloadLargeFile(url, threshold = 2 * 1024 * 1024) {
    if (fileSize > threshold && platform === 'android') {
        return downloadChunked(url, chunkSize = 512 * 1024);
    }
    return downloadDirect(url);
}

This prevents large memory allocations that trigger OOM conditions.

3. Memory Management Workarounds

  • Temporary file strategy: Download to device storage incrementally rather than holding entire file in memory
  • Background processing: Use Android’s DownloadManager API instead of WebView for large files
  • Progressive validation: Verify file integrity during download rather than post-completion

4. Device-Specific Detection

Implement Boox device detection and apply conservative memory limits:

const isBooxDevice = /QUALCOMM.*Air/.test(navigator.userAgent);
const maxSafeSize = isBooxDevice ? 2 * 1024 * 1024 : 50 * 1024 * 1024;

Root Cause Opinion

My assessment is that Boox’s Android implementation has reduced WebView heap limits compared to standard Android, causing silent memory exhaustion during large file downloads. The consistent 1.05MB file size suggests a specific buffer limit being hit.

The fix likely requires Obsidian implementing platform-specific download strategies rather than relying solely on WebView’s built-in capabilities.