What went wrong?
Kobo sync, which previously worked for me in v9, v10 and also worked in the 3-way test sync from ghcr.io/bookorbit/bookorbit:pr-338-6f64644f8f78, has stopped working in v11.
I've recently added Koreader sync via Xteink4 and that's now syncing perfectly. BookOrbit shows Koreader sync as accurate and matches progress on BookOrbit. Kobo does not match, obviously, due to failed sync.
Steps to reproduce
- Open Kobo.
- Click sync.
- Message returned on Kobo - "Sync Failed. Please try again."
Expected vs actual behavior
Sync to work on Kobo, as previously successfully tested on v9 and v10.
Your setup
- BookOrbit v11
- Kobo Libra Colour
Relevant logs (optional)
2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-a","method":"GET","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/user/profile"} context=KoboDeviceController msg=proxy: GET /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/user/profile
2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-b","method":"GET","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/user/loyalty/benefits"} context=KoboDeviceController msg=proxy: GET /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/user/loyalty/benefits
2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-c","method":"GET","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/products/books/subscriptions"} context=KoboDeviceController msg=proxy: GET /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/products/books/subscriptions
2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-d","method":"GET","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/deals"} context=KoboDeviceController msg=proxy: GET /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/deals
2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-e","method":"GET","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/assets?DiffRequests=[%7BKey:EPD-KoboPlus-ReadOnly-NeverSubscribed,ETag:W/NjM4MzE4NjcxNjEwMDAwMDAwLTMxODIw%7D]"} context=KoboDeviceController msg=proxy: GET /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/assets?DiffRequests=[%7BKey:EPD-KoboPlus-ReadOnly-NeverSubscribed,ETag:W/NjM4MzE4NjcxNjEwMDAwMDAwLTMxODIw%7D]
2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-l","method":"POST","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-14/items"} context=KoboDeviceController msg=proxy: POST /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-14/items
2026/06/21 08:42PM 40 pid=7 hostname=d8c94fe44c31 req={"id":"req-l","method":"POST","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-14/items"} res={"statusCode":400} responseTime=274 msg=[HTTP] POST /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-14/items 400 +274ms
2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-m","method":"POST","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-16/items"} context=KoboDeviceController msg=proxy: POST /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-16/items
2026/06/21 08:42PM 40 pid=7 hostname=d8c94fe44c31 req={"id":"req-m","method":"POST","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-16/items"} res={"statusCode":400} responseTime=272 msg=[HTTP] POST /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-16/items 400 +272ms
node:buffer:612
throw new ERR_INVALID_ARG_TYPE(
^
TypeError [ERR_INVALID_ARG_TYPE]: The "list[0]" argument must be an instance of Buffer or Uint8Array. Received type string ('{}')
at Buffer.concat (node:buffer:612:13)
at Readable.onEnd (/app/node_modules/.pnpm/[email protected]/node_modules/fastify/lib/content-type-parser.js:296:21)
at Readable.emit (node:events:508:28)
at endReadableNT (node:internal/streams/readable:1701:12)
at process.processTicksAndRejections (node:internal/process/task_queues:89:21) {
code: 'ERR_INVALID_ARG_TYPE'
}
Screenshots (optional)
No response
Before submitting
What went wrong?
Kobo sync, which previously worked for me in v9, v10 and also worked in the 3-way test sync from ghcr.io/bookorbit/bookorbit:pr-338-6f64644f8f78, has stopped working in v11.
I've recently added Koreader sync via Xteink4 and that's now syncing perfectly. BookOrbit shows Koreader sync as accurate and matches progress on BookOrbit. Kobo does not match, obviously, due to failed sync.
Steps to reproduce
Expected vs actual behavior
Sync to work on Kobo, as previously successfully tested on v9 and v10.
Your setup
Relevant logs (optional)
2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-a","method":"GET","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/user/profile"} context=KoboDeviceController msg=proxy: GET /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/user/profile 2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-b","method":"GET","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/user/loyalty/benefits"} context=KoboDeviceController msg=proxy: GET /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/user/loyalty/benefits 2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-c","method":"GET","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/products/books/subscriptions"} context=KoboDeviceController msg=proxy: GET /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/products/books/subscriptions 2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-d","method":"GET","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/deals"} context=KoboDeviceController msg=proxy: GET /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/deals 2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-e","method":"GET","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/assets?DiffRequests=[%7BKey:EPD-KoboPlus-ReadOnly-NeverSubscribed,ETag:W/NjM4MzE4NjcxNjEwMDAwMDAwLTMxODIw%7D]"} context=KoboDeviceController msg=proxy: GET /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/assets?DiffRequests=[%7BKey:EPD-KoboPlus-ReadOnly-NeverSubscribed,ETag:W/NjM4MzE4NjcxNjEwMDAwMDAwLTMxODIw%7D] 2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-l","method":"POST","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-14/items"} context=KoboDeviceController msg=proxy: POST /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-14/items 2026/06/21 08:42PM 40 pid=7 hostname=d8c94fe44c31 req={"id":"req-l","method":"POST","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-14/items"} res={"statusCode":400} responseTime=274 msg=[HTTP] POST /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-14/items 400 +274ms 2026/06/21 08:42PM 30 pid=7 hostname=d8c94fe44c31 req={"id":"req-m","method":"POST","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-16/items"} context=KoboDeviceController msg=proxy: POST /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-16/items 2026/06/21 08:42PM 40 pid=7 hostname=d8c94fe44c31 req={"id":"req-m","method":"POST","url":"/api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-16/items"} res={"statusCode":400} responseTime=272 msg=[HTTP] POST /api/v1/kobo/d9c42f649246a951b34c154f90870321/v1/library/tags/col-16/items 400 +272ms node:buffer:612 throw new ERR_INVALID_ARG_TYPE( ^ TypeError [ERR_INVALID_ARG_TYPE]: The "list[0]" argument must be an instance of Buffer or Uint8Array. Received type string ('{}') at Buffer.concat (node:buffer:612:13) at Readable.onEnd (/app/node_modules/.pnpm/[email protected]/node_modules/fastify/lib/content-type-parser.js:296:21) at Readable.emit (node:events:508:28) at endReadableNT (node:internal/streams/readable:1701:12) at process.processTicksAndRejections (node:internal/process/task_queues:89:21) { code: 'ERR_INVALID_ARG_TYPE' }Screenshots (optional)
No response
Before submitting