Register Guidelines E-Books Today's Posts Search

Go Back   MobileRead Forums > E-Book Software > Calibre > Plugins

Notices

Reply
 
Thread Tools Search this Thread
Old 03-09-2025, 02:21 PM   #121
PeterT
Grand Sorcerer
PeterT ought to be getting tired of karma fortunes by now.PeterT ought to be getting tired of karma fortunes by now.PeterT ought to be getting tired of karma fortunes by now.PeterT ought to be getting tired of karma fortunes by now.PeterT ought to be getting tired of karma fortunes by now.PeterT ought to be getting tired of karma fortunes by now.PeterT ought to be getting tired of karma fortunes by now.PeterT ought to be getting tired of karma fortunes by now.PeterT ought to be getting tired of karma fortunes by now.PeterT ought to be getting tired of karma fortunes by now.PeterT ought to be getting tired of karma fortunes by now.
 
Posts: 13,528
Karma: 78910202
Join Date: Nov 2007
Location: Toronto
Device: Libra H2O, Libra Colour
This is probably a rather unusual edge case.

Kovid has added the ability to calibre to allow the Connect to Folder operation (found in the Connect/Share menu) to also specify a device type for the connection. This is extremely useful in my case where my main conputer right now is a ChromeBook. While yes, calibre does run in the ChromeOS linux development environent (crostini / penguin), one drawback is USB support/removable device support is limited inb that all that can be done is to share the device's file system with the Linux environment. All shared devices are then accesible via the /mnt/chromeos mount point on the Linux side; the device is NOT seen as a USB device; rather the mount is via 9p file system.

Testing has shown that the 9p file system does not support some of the I/O operations required by sqlite (used by Kobo to access the KoboReader.sqlite database). These I/O operations are required due to the database having Write Ahead Logging enabled (WAL).

I found though that if I simply cloned the Kobo storage to local storage and had calibre open the local copy all worked (including Kobo Utiities plugins).

The fun however occurs when I point calibre to the /mnt/chromeos/removable/KOBOeReader directory. Kovid has implemented a workaround for the file system issues by copying the Kobo database to local storage, letting calibre access that copy and then on disconnect, copying the database back to the Kobo. Changes for this copying can be found in recent changes to the Kobo driver (look in both devices/kobo/driver.py and the new devices/kobo/db.by modules).

In this case, while some of the Kobo Utilities functions DO function, both the Check the device database and Compress the device database functions fail; probably due to the plugin obtaining the location of the true database (i.e. /mnt/chromeos/removable/KOBOeReader/.kobo/KoboReader.sqlite and not the copy that the driver has created.

This testing has been performed using preview release 7.26.102 and the current GitHub source.

You can find the discussions leading up to this change in the following thread Wish for Device Driver mount point

Spoiler:
Code:
ApplicationPaletteChange event ignored
Using calibre Qt style: True
Failed to load resource: 'commit.txt' from the plugin zip file: /home/peterjt/.config/calibre/plugins/OverDrive Libby.zip
Traceback (most recent call last):
  File "/home/peterjt/work/calibre-master/src/calibre/customize/zipplugin.py", line 46, in get_resources
    ans[name] = zf.read(name)
                ^^^^^^^^^^^^^
  File "zipfile.py", line 1510, in read
  File "zipfile.py", line 1547, in open
  File "zipfile.py", line 1476, in getinfo
KeyError: "There is no item named 'commit.txt' in the archive"
[overdrive_libby/0.2.3] Loaded 1 items from file cache /home/peterjt/.config/calibre/plugins/overdrive_libby.libraries.json
[overdrive_libby/0.2.3] Loaded 0 items from file cache /home/peterjt/.config/calibre/plugins/overdrive_libby.media.json
Failed to create system tray icon, your desktop environment probably does not support the StatusNotifier spec https://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/
EpubMerge: DEBUG: 2025-03-09 13:51:56,886: calibre_plugins.epubmerge.epubmerge_plugin(156): macmenuhack file_path:/home/peterjt/.config/calibre/plugins/fanficfare_macmenuhack.txt
QRhiGles2: Failed to create temporary context
QRhiGles2: Failed to create context
This plugin does not support createPlatformVulkanInstance
QVulkanInstance: Failed to initialize Vulkan
Unable to detect GPU vendor.
WebEngineContext is used before QtWebEngineQuick::initialize() or OpenGL context creation failed.
calibre Debug log
calibre 7.26.103*  embedded-python: True
Linux-6.6.65-06377-gaae6fc9ba7df-x86_64-with-glibc2.36 Linux ('64bit', 'ELF')
('Linux', '6.6.65-06377-gaae6fc9ba7df', '#1 SMP PREEMPT_DYNAMIC Wed, 8 Jan 2025 13:19:21 -0800')
Python 3.11.5
Interface language: None
EXE path: /opt/calibre/bin/calibre-debug
Successfully initialized third party plugins: DeACSM (0, 0, 16) && LCPL Input (0, 0, 5) && DeDRM (10, 0, 9) && Backup Configuration Folder (1, 1, 2) && EpubMerge (3, 2, 0) && Find Duplicates (1, 10, 9) && Goodreads (1, 8, 2) && Kobo Metadata (1, 10, 0) && Kobo Utilities (2, 18, 4) && Manage Series (1, 5, 2) && OverDrive Libby (0, 2, 3) && Quality Check (1, 13, 16) && Reading List (1, 15, 4) && Standard Ebooks (1, 0, 0)
calibre 7.26.103*  embedded-python: True
Linux-6.6.65-06377-gaae6fc9ba7df-x86_64-with-glibc2.36 Linux ('64bit', 'ELF')
('Linux', '6.6.65-06377-gaae6fc9ba7df', '#1 SMP PREEMPT_DYNAMIC Wed, 8 Jan 2025 13:19:21 -0800')
Python 3.11.5
Interface language: None
EXE path: /opt/calibre/bin/calibre-debug
Successfully initialized third party plugins: DeACSM (0, 0, 16) && LCPL Input (0, 0, 5) && DeDRM (10, 0, 9) && Backup Configuration Folder (1, 1, 2) && EpubMerge (3, 2, 0) && Find Duplicates (1, 10, 9) && Goodreads (1, 8, 2) && Kobo Metadata (1, 10, 0) && Kobo Utilities (2, 18, 4) && Manage Series (1, 5, 2) && OverDrive Libby (0, 2, 3) && Quality Check (1, 13, 16) && Reading List (1, 15, 4) && Standard Ebooks (1, 0, 0)
QPA platform: xcb
devicePixelRatio: 1.25
logicalDpi: 96.0 x 96.0
physicalDpi: 96.09458128078816 x 96.25263157894736
[0.00] Starting up...
[0.00] Showing splash screen...
[1.08] splash screen shown
[1.08] Initializing db...
[1.57] db initialized
[1.57] Constructing main UI...
DEBUG:    0.0 Kobo Utilities Configuration - CreateNewCustomColumn is supported
[3.77] GUI main window shown
DEBUG:    2.0 No Kobo Touch, Glo or Mini appears to be connected
DEBUG:    2.0 rebuild_menus - self.supports_ratings=None, self.supports_tiles=None
DEBUG:    2.0 KoboUtilities:set_toolbar_button_tooltip - start: text='None'
DEBUG:    2.0 device_driver_name - could not load extended driver. Exception= No module named 'calibre_plugins.kobotouch_extended'
DEBUG:    2.0 KoboUtilities:set_toolbar_button_tooltip - setting to text='Utilities to use with Kobo ereaders

Driver: KoboTouch'
DEBUG:    2.0 device_driver_name - could not load extended driver. Exception= No module named 'calibre_plugins.kobotouch_extended'
[3.90] main UI initialized...
[3.90] Hiding splash screen
[3.90] splash screen hidden
[3.90] Started up in 3.90 seconds with 2864 books
[3.90] Starting the smartdevice driver
SMART_DEV (   0.00:  0.001) _attach_to_port try ip address "" on port 9090
SMART_DEV (   0.94:  0.837) _startup_on_demand listening on port 9090
SMART_DEV (   0.96:  0.000) _attach_to_port try ip address "" on port 54982
SMART_DEV (   0.97:  0.000) _startup_on_demand broadcast socket listening on port 54982
[4.89] Finished starting smartdevice
SMART_DEV (   2.06:  1.087) run All IP addresses {'lo': [{'addr': '127.0.0.1', 'netmask': '255.0.0.0', 'peer': '127.0.0.1'}], 'docker0': [{'addr': '172.17.0.1', 'netmask': '255.255.0.0', 'broadcast': '172.17.255.255'}], 'eth0': [{'addr': '100.115.92.205', 'netmask': '255.255.255.240', 'broadcast': '100.115.92.207'}]}
DEBUG:    0.0 Kobo: I/O error connecting to /mnt/chromeos/removable/KOBOeReader/.kobo/KoboReader.sqlite copying it into temporary storage and connecting there
DEBUG:    1.1 Database Version:  175
DEBUG:   22.7 KoboUtilities:_on_device_connection_changed - self.plugin_device_connection_changed.__class__:  <class 'PyQt6.QtCore.pyqtBoundSignal'>
DEBUG:   22.7 Methods for self.plugin_device_connection_changed:  ['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'connect', 'disconnect', 'emit', 'signal']
DEBUG:   22.7 Have a Kobo device connected connected
DEBUG:   22.7 BEGIN Get Device Path
DEBUG:   22.7 Root path of device: /mnt/chromeos/removable/KOBOeReader/
DEBUG:   22.7 END Get Device Path
DEBUG:   22.7 KoboUtilities:get_device - self.device_path="/mnt/chromeos/removable/KOBOeReader/"
DEBUG:   22.7 KoboUtilities:set_toolbar_button_tooltip - start: text='None'
DEBUG:   22.7 device_driver_name - could not load extended driver. Exception= No module named 'calibre_plugins.kobotouch_extended'
DEBUG:   22.7 KoboUtilities:set_toolbar_button_tooltip - setting to text='Utilities to use with Kobo ereaders

Driver: KoboTouch'
Job: 0 Get device information started
DeviceJob: 0 Get device information done, calling callback
DeviceJob: 0 Get device information callback returned
Job: 1 Set library information started
DeviceJob: 1 Set library information done, calling callback
DeviceJob: 1 Set library information callback returned
Job: 2 Get list of books on device started
DEBUG:    1.4 KoboTouch:books - oncard='None'
DEBUG:    1.4 KoboTouch:books - oncard='None', prefix='/mnt/chromeos/removable/KOBOeReader/'
DEBUG:    1.4 device_version_info - start
DEBUG:    1.4 device_version_info - version_file=/mnt/chromeos/removable/KOBOeReader/.kobo/version
DEBUG:    1.4 device_version_info - have opened version_file
DEBUG:    1.4 device_version_info - self._device_version_info= ['N4283C0013322', '4.9.77', '4.41.23145', '4.9.77', '4.9.77', '00000000-0000-0000-0000-000000000390']
DEBUG:    1.4 Kobo device: Kobo Clara Colour
DEBUG:    1.4 Version of driver: (2, 6, 0) Has kepubs: True
DEBUG:    1.4 Version of firmware: (4, 41, 23145) Has kepubs: True
DEBUG:    1.4 Firmware supports cover image tree: True
DEBUG:    1.4 KoboTouch:books - opts.extra_customization= []
DEBUG:    1.4 KoboTouch:books - driver options= Driver:KoboTouch, Options - format_map: ['kepub', 'epub', 'pdf', 'txt', 'cbz', 'cbr'], use_subdirs: True, read_metadata: True, use_author_sort: False, save_template: {author_sort}/{title} - {authors}, extra_customization: [], manage_collections: True, use_collections_columns: True, collections_columns: , use_collections_template: False, collections_template: , create_collections: False, delete_empty_collections: False, ignore_collections_names: , upload_covers: False, dithered_covers: False, keep_cover_aspect: False, upload_grayscale: False, letterbox_fs_covers: False, letterbox_fs_covers_color: #000000, png_covers: False, show_archived_books: False, show_previews: False, show_recommendations: False, update_series: True, force_series_id: False, update_core_metadata: False, update_purchased_kepubs: False, update_device_metadata: True, update_subtitle: False, subtitle_template: , update_bookstats: False, bookstats_wordcount_template: , bookstats_pagecount_template: , bookstats_timetoread_upper_template: , bookstats_timetoread_lower_template: , kepubify: True, template_for_kepubify: None, modify_css: False, per_device_css: {}, override_kobo_replace_existing: True, affect_hyphenation: False, disable_hyphenation: False, hyphenation_min_chars: 6, hyphenation_min_chars_before: 3, hyphenation_min_chars_after: 3, hyphenation_limit_lines: 2, support_newer_firmware: False, debugging_title: , driver_version: 2.6.0
DEBUG:    1.4 KoboTouch:books - prefs['manage_device_metadata']= on_connect
DEBUG:    1.4 KoboTouch:books - set_debugging_title to ''
DEBUG:    1.4 KoboTouch:books - length bl=0
Job: 0 Get device information finished
No details available.
Job: 1 Set library information finished
No details available.
DEBUG:    1.8 KoboTouch:books - length bl after sync=249
DEBUG:    1.8 KoboTouch:books - reading device database
DEBUG:    1.8 KoboTouch:books - shelf list: ['Paddington Bear', 'Inspector Alan Banks', 'Finished_2019', 'The Kingston Cycle', 'A Thursday Next Novel', 'Capucine Culinary Mystery', 'finished', 'Rivers of London', 'Library', 'Bewdley', 'Keto', 'Reference', 'Instant Pot', 'Wishlist', 'The Inheritance cycle', 'Foundation', 'Chef Maurice Mysteries', 'Finished_2022', 'Reading', 'Slow Cooker', 'Finished_2014', 'Robert Langdon', 'News', 'Cooking', 'The Locked Tomb Trilogy', 'Kay Harker', 'Finished_2013', 'Finished_2017', 'ReadingList']
DEBUG:    1.8 KoboTouch:books - query= SELECT Title, Attribution, DateCreated, ContentID, MimeType, ContentType, ImageId, ReadStatus, Description, Publisher , ___ExpirationStatus, FavouritesIndex, Accessibility, Language, IsDownloaded, ISBN, Series, SeriesNumber, ___UserID, ExternalId, Subtitle, SeriesID, SeriesNumberFloat, StorePages, StoreWordCount, StoreTimeToReadLowerEstimate, StoreTimeToReadUpperEstimate FROM content  WHERE BookID IS NULL  AND ((Accessibility = -1 AND IsDownloaded in ('true', 1 ))       OR (Accessibility IN (1,2,8,9) and IsDownloaded in ('true', 1))         )  AND (externalId IS NULL OR externalId = '') AND contentId NOT LIKE 'file:///mnt/sd/%'
DEBUG:    2.4 KoboTouch:books - automatically managing metadata
DEBUG:    2.4 KoboTouch:books - self.kobo_series_dict= {'Highlands & Islands Detective': '4537cd63-0683-56de-8a58-cc8a98e1e91f', 'Tom Swift': '3549cc7d-adad-517a-ba45-88de67e93831', 'Air Fryer': '9722f8e6-adc8-5564-b36e-cf8cce8ab8ef', 'Air Fryer Recipes For Beginners': '86fcf323-8026-5602-83ff-2f65855fbb03', 'Step-by-Step Instant Pot Cookbooks': 'a4992e3a-0e9d-5cd0-99b2-a2782d03d586', 'Paksenarrion Series Combo Volumes': '49ee9352-abaa-5428-8afd-17c9a6f6f077', 'Honor Harrington': '47d6044d-bddd-5bc1-92bc-b24d4b335124', 'Dark Wen': '91ef627a-285d-5dff-a89f-fb1d77e144bf', 'DS Peter Gayle thriller series': 'ca710216-33a5-5113-87ca-25d11bd0ddf7', 'The Supernatural and Elder Threat Assessment Agency': '3c63d432-f5e7-558e-8456-a1f2c72d6b95', 'The Contessa Munroe Mysteries': 'c7c5b1c9-0699-5fb4-9c42-a3a974fa0bdc', 'Patrick Smythe': '7ac7d109-4975-51d1-94a5-bebcc6c13847', 'A kirsten Stewart Thriller': '61f39916-157b-547d-bcdd-e92868b045d9', 'Betty Crocker Big Book': '84d2c516-e2e7-5b61-ae60-69d19109955f', 'A Patrick Smythe Mystery Thriller': '7ac7d109-4975-51d1-94a5-bebcc6c13847', 'Diabetic Cookbooks': 'dfee5633-9c98-56f9-8437-e4f89070b959', 'Infinity Engines: Missions': 'c43d18b1-dfaa-5429-83f9-9d17e31995d4', 'The Twisted Christmas Trilogy': '69c24b85-e4dd-56da-adfd-ae3647eff020', 'Chronicles of Amber': '750d7509-36a9-5c9f-9156-e6f11edb5396', 'The Cecelia and Kate Novels': '8fae7074-1bc2-5483-bdd9-3a4cec0beb61', 'Thursday Next': '3083703b-e344-5978-a070-0c98267c33ad', 'Chef Maurice Mysteries': 'c565a3cc-c448-5498-92f4-8b14cc960127', 'The C.T. Ferguson Mysteries': '7dc1d572-3050-5df7-b065-fd6ef3a8a2ff', 'DCI Alec McKay': '0e776875-7d8e-5743-b856-013f503b1b34', 'Siobhan Duffy Mysteries': '613019a8-783a-58d3-bfe6-60ae9f463656', 'Betty Crocker Cooking': 'b41cad75-bb5f-504d-9241-69aaacbb3d35', 'Inspector Zoë Janssen Thriller': 'c7f0208c-85fd-5ec1-8789-e8dd945d5956', 'The Connection Trilogy': '7378bc9c-d310-5ce9-95ba-81405dc8f448', 'The Kat Bronsky Thrillers': '1845a7cd-f564-5526-b298-c3fe7a8cdf74', 'Kat and Mouse Mysteries': '5700259a-98ee-526f-aceb-a4ac7a54373b', 'The Forrester Detective Agency Mysteries': '3c9e1f71-609f-589a-b61f-dff42bf0dac7', 'DS Ashley Knight': '66fbdd23-3309-5eab-83b8-22e5825e7233', 'Lockwood & Co.': 'd7bf6426-71aa-5c59-820e-03259afb669e', 'The Outlaws Scarlett and Browne': 'da43d135-8aaf-5a51-9c82-cf8483c3ba25', 'The Empyrean': '757721be-b164-5c8b-8dab-94138b6474c9'}
DEBUG:    4.1 KoboTouch:books - about to sync_booklists
DEBUG:    4.1 USBMS: starting sync_booklists
DEBUG:    4.6 USBMS: finished sync_booklists
DEBUG:    4.6 KoboTouch:books - have done sync_booklists
DEBUG:    4.6 KoboTouch:books - end - oncard='None'
DEBUG:    4.6 KoboTouch:books - oncard='carda'
DEBUG:    4.6 KoboTouch:books - Asked to process 'carda', but do not have one!
DEBUG:    4.6 KoboTouch:books - oncard='cardb'
DEBUG:    4.6 KoboTouch:books - Asked to process 'cardb', but do not have one!
DeviceJob: 2 Get list of books on device done, calling callback
DEBUG:    4.6 DeviceJob: metadata_downloaded: Starting set_books_in_library
DEBUG:    4.7 DeviceJob: set_books_in_library: books to process= 249
DEBUG:    4.7 DeviceJob: set_books_in_library finished: time= 0.005827188491821289
DEBUG:    4.7 DeviceJob: metadata_downloaded: updating views
DEBUG:    4.8 DeviceJob: metadata_downloaded: syncing
DEBUG:    4.8 DeviceJob: metadata_downloaded: refreshing ondevice
DEBUG:    4.8 DeviceJob: metadata_downloaded: sending metadata_available signal
DEBUG:   26.4 KoboUtilites:_on_device_metadata_available - Start
DEBUG:   26.4 Have a Kobo device connected connected
DEBUG:   26.4 BEGIN Get Device Path
DEBUG:   26.4 Root path of device: /mnt/chromeos/removable/KOBOeReader/
DEBUG:   26.4 END Get Device Path
DEBUG:   26.4 KoboUtilities:get_device - self.device_path="/mnt/chromeos/removable/KOBOeReader/"
DEBUG:   26.4 KoboUtilities:get_device - drive_info: {'main': {'device_store_uuid': '9cb03268-113b-4d0a-9065-f9d8a4ff2278', 'device_name': 'Kobo Libra Colour', 'location_code': 'main', 'last_library_uuid': 'd1da7663-faf7-415f-8e8e-df0b96a35965', 'calibre_version': '7.26.103', 'date_last_connected': '2025-03-09T17:52:17.644250+00:00', 'prefix': '/mnt/chromeos/removable/KOBOeReader/'}}
DEBUG:   26.4 migrate_library_config_if_required - start
DEBUG:   26.4 get_library_config - library_config: {'SchemaVersion': 0.1, 'profiles': {'Default': {'customColumnOptions': {'currentReadingLocationColumn': '', 'lastReadColumn': '', 'percentReadColumn': '', 'ratingColumn': 'rating', 'restOfBookEstimateColumn': '', 'timeSpentReadingColumn': ''}, 'forDevice': None, 'storeOptionsStore': {'doNotStoreIfReopened': False, 'promptToStore': True, 'storeIfMoreRecent': False, 'storeOnConnect': False}}}}
DEBUG:   26.4 KoboUtilities:get_device - device_name: Kobo Libra Colour
DEBUG:   26.4 get_plugin_pref - start - store_name='commonOptionsStore', option='individualDeviceOptions'
DEBUG:   26.4 get_prefs - start - store_name='backupOptionsStore'
DEBUG:   26.4 KoboUtilities:set_toolbar_button_tooltip - start: text='None'
DEBUG:   26.4 KoboUtilities:set_toolbar_button_tooltip - device connected. self.device.fwversion= (4, 41, 23145)
DEBUG:   26.4 KoboUtilities:set_toolbar_button_tooltip - setting to text='Utilities to use with Kobo ereaders

Connected Device: Kobo Libra Colour
Firmware version: 4.41.23145
Driver: KoboTouch'
DEBUG:   26.4 KoboUtilites:_on_device_metadata_available - self.current_device_profile: None
DEBUG:   26.4 KoboUtilites:_on_device_metadata_available - self.current_backup_config: {'doDailyBackp': False, 'backupEachCOnnection': True, 'backupCopiesToKeepSpin': 5, 'backupDestDirectory': '/home/peterjt/kobobackup', 'backupZipDatabase': True}
DEBUG:   26.4 KoboUtilites:_on_device_metadata_available - About to start auto backup
DEBUG:   26.4 auto_backup_device_database - start
DEBUG:   26.4 BEGIN Get Device Path
DEBUG:   26.4 Root path of device: /mnt/chromeos/removable/KOBOeReader/
DEBUG:   26.4 END Get Device Path
DEBUG:   26.4 auto_backup_device_database - destination directory= /home/peterjt/kobobackup
DEBUG:   26.4 auto_backup_device_database - about to get version info from device...
DEBUG:   26.4 auto_backup_device_database - version_info= ['N4283C0013322', '4.9.77', '4.41.23145', '4.9.77', '4.9.77', '00000000-0000-0000-0000-000000000390']
DEBUG:   26.6 auto_backup_device_database - device_information= ('Kobo Clara Colour', '', '', '', {'main': {'device_store_uuid': '9cb03268-113b-4d0a-9065-f9d8a4ff2278', 'device_name': 'Kobo Libra Colour', 'location_code': 'main', 'last_library_uuid': 'd1da7663-faf7-415f-8e8e-df0b96a35965', 'calibre_version': '7.26.103', 'date_last_connected': '2025-03-09T17:52:21.399912+00:00', 'prefix': '/mnt/chromeos/removable/KOBOeReader/'}})
DEBUG:   26.6 auto_backup_device_database - device_name= KoboClaraColour
DEBUG:   26.6 auto_backup_device_database - backup_file_template= KoboReader-KoboClaraColour-N4283C0013322-
DEBUG:   26.6 auto_backup_device_database - backup_options= {'backupDestDirectory': '/home/peterjt/kobobackup', 'backupCopiesToKeepSpin': 5, 'doDailyBackp': False, 'backupEachCOnnection': True, 'backupZipDatabase': True, 'device_name': 'KoboClaraColour', 'serial_number': 'N4283C0013322', 'backup_file_template': 'KoboReader-{0}-{1}-{2}', 'database_file': '/mnt/chromeos/removable/KOBOeReader/.kobo/KoboReader.sqlite', 'device_path': '/mnt/chromeos/removable/KOBOeReader/'}
DEBUG:   26.6 KoboUtilitiesAction::_device_database_backup
DEBUG:   26.6 auto_backup_device_database - end
DEBUG:   26.6 Have a Kobo device connected connected
DEBUG:   26.6 BEGIN Get Device Path
DEBUG:   26.6 Root path of device: /mnt/chromeos/removable/KOBOeReader/
DEBUG:   26.6 END Get Device Path
DEBUG:   26.6 KoboUtilities:get_device - self.device_path="/mnt/chromeos/removable/KOBOeReader/"
DEBUG:   26.6 KoboUtilities:get_device - drive_info: {'main': {'device_store_uuid': '9cb03268-113b-4d0a-9065-f9d8a4ff2278', 'device_name': 'Kobo Libra Colour', 'location_code': 'main', 'last_library_uuid': 'd1da7663-faf7-415f-8e8e-df0b96a35965', 'calibre_version': '7.26.103', 'date_last_connected': '2025-03-09T17:52:17.644250+00:00', 'prefix': '/mnt/chromeos/removable/KOBOeReader/'}}
DEBUG:   26.6 migrate_library_config_if_required - start
DEBUG:   26.6 get_library_config - library_config: {'SchemaVersion': 0.1, 'profiles': {'Default': {'customColumnOptions': {'currentReadingLocationColumn': '', 'lastReadColumn': '', 'percentReadColumn': '', 'ratingColumn': 'rating', 'restOfBookEstimateColumn': '', 'timeSpentReadingColumn': ''}, 'forDevice': None, 'storeOptionsStore': {'doNotStoreIfReopened': False, 'promptToStore': True, 'storeIfMoreRecent': False, 'storeOnConnect': False}}}}
DEBUG:   26.6 KoboUtilities:get_device - device_name: Kobo Libra Colour
DEBUG:   26.6 get_plugin_pref - start - store_name='commonOptionsStore', option='individualDeviceOptions'
DEBUG:   26.6 get_prefs - start - store_name='backupOptionsStore'
DEBUG:   26.6 rebuild_menus - self.supports_ratings=True, self.supports_tiles=True
DEBUG:   26.6 KoboUtilities:set_toolbar_button_tooltip - start: text='None'
DEBUG:   26.6 KoboUtilities:set_toolbar_button_tooltip - device connected. self.device.fwversion= (4, 41, 23145)
DEBUG:   26.6 KoboUtilities:set_toolbar_button_tooltip - setting to text='Utilities to use with Kobo ereaders

Connected Device: Kobo Libra Colour
Firmware version: 4.41.23145
Driver: KoboTouch'
DEBUG:   26.6 rebuild_menus - have device.
READING LIST: Metadata available: {'main': {'device_store_uuid': '9cb03268-113b-4d0a-9065-f9d8a4ff2278', 'device_name': 'Kobo Libra Colour', 'location_code': 'main', 'last_library_uuid': 'd1da7663-faf7-415f-8e8e-df0b96a35965', 'calibre_version': '7.26.103', 'date_last_connected': '2025-03-09T17:52:17.644250+00:00', 'prefix': '/mnt/chromeos/removable/KOBOeReader/'}}
READING LIST: Sync Now - force_sync= False
DeviceJob: 2 Get list of books on device callback returned
Job: 3 Send metadata to device started
DEBUG:    5.0 KOBO:sync_booklists - start
DEBUG:    5.0 KoboTouch:update_device_database_collections - oncard='main'
DEBUG:    5.0 KoboTouch:update_device_database_collections - device='Driver:KoboTouch, Options - format_map: ['kepub', 'epub', 'pdf', 'txt', 'cbz', 'cbr'], use_subdirs: True, read_metadata: True, use_author_sort: False, save_template: {author_sort}/{title} - {authors}, extra_customization: [], manage_collections: True, use_collections_columns: True, collections_columns: , use_collections_template: False, collections_template: , create_collections: False, delete_empty_collections: False, ignore_collections_names: , upload_covers: False, dithered_covers: False, keep_cover_aspect: False, upload_grayscale: False, letterbox_fs_covers: False, letterbox_fs_covers_color: #000000, png_covers: False, show_archived_books: False, show_previews: False, show_recommendations: False, update_series: True, force_series_id: False, update_core_metadata: False, update_purchased_kepubs: False, update_device_metadata: True, update_subtitle: False, subtitle_template: , update_bookstats: False, bookstats_wordcount_template: , bookstats_pagecount_template: , bookstats_timetoread_upper_template: , bookstats_timetoread_lower_template: , kepubify: True, template_for_kepubify: None, modify_css: False, per_device_css: {}, override_kobo_replace_existing: True, affect_hyphenation: False, disable_hyphenation: False, hyphenation_min_chars: 6, hyphenation_min_chars_before: 3, hyphenation_min_chars_after: 3, hyphenation_limit_lines: 2, support_newer_firmware: False, debugging_title: , driver_version: 2.6.0'
DEBUG:    5.0 KoboTouch::is_supported_fwversion - self.fwversion[:2] (4, 41)
DEBUG:    5.0 KoboTouch:update_device_database_collections - set_debugging_title to ''
DEBUG:    5.0 KoboTouch:update_device_database_collections - managing bookshelves and series.
DEBUG:    5.0 KoboTouch:update_device_database_collections - Number of series set=0 Number of books=167
DEBUG:    5.0 KoboTouch:update_device_database_collections - Number of core metadata set=0 Number of books=167
Job: 2 Get list of books on device finished
No details available.
DEBUG:   27.8 Have a Kobo device connected connected
DEBUG:   27.8 BEGIN Get Device Path
DEBUG:   27.8 Root path of device: /mnt/chromeos/removable/KOBOeReader/
DEBUG:   27.8 END Get Device Path
DEBUG:   27.8 KoboUtilities:get_device - self.device_path="/mnt/chromeos/removable/KOBOeReader/"
DEBUG:   27.8 KoboUtilities:get_device - drive_info: {'main': {'device_store_uuid': '9cb03268-113b-4d0a-9065-f9d8a4ff2278', 'device_name': 'Kobo Libra Colour', 'location_code': 'main', 'last_library_uuid': 'd1da7663-faf7-415f-8e8e-df0b96a35965', 'calibre_version': '7.26.103', 'date_last_connected': '2025-03-09T17:52:17.644250+00:00', 'prefix': '/mnt/chromeos/removable/KOBOeReader/'}}
DEBUG:   27.8 migrate_library_config_if_required - start
DEBUG:   27.8 get_library_config - library_config: {'SchemaVersion': 0.1, 'profiles': {'Default': {'customColumnOptions': {'currentReadingLocationColumn': '', 'lastReadColumn': '', 'percentReadColumn': '', 'ratingColumn': 'rating', 'restOfBookEstimateColumn': '', 'timeSpentReadingColumn': ''}, 'forDevice': None, 'storeOptionsStore': {'doNotStoreIfReopened': False, 'promptToStore': True, 'storeIfMoreRecent': False, 'storeOnConnect': False}}}}
DEBUG:   27.8 KoboUtilities:get_device - device_name: Kobo Libra Colour
DEBUG:   27.8 get_plugin_pref - start - store_name='commonOptionsStore', option='individualDeviceOptions'
DEBUG:   27.8 get_prefs - start - store_name='backupOptionsStore'
DEBUG:   27.8 rebuild_menus - self.supports_ratings=True, self.supports_tiles=True
DEBUG:   27.8 KoboUtilities:set_toolbar_button_tooltip - start: text='None'
DEBUG:   27.8 KoboUtilities:set_toolbar_button_tooltip - device connected. self.device.fwversion= (4, 41, 23145)
DEBUG:   27.8 KoboUtilities:set_toolbar_button_tooltip - setting to text='Utilities to use with Kobo ereaders

Connected Device: Kobo Libra Colour
Firmware version: 4.41.23145
Driver: KoboTouch'
DEBUG:   27.8 rebuild_menus - have device.
DEBUG:    7.0 KoboTouch:update_device_database_collections - Finished 
DEBUG:    7.0 USBMS: starting sync_booklists
DEBUG:    7.5 USBMS: finished sync_booklists
DEBUG:    7.5 KOBO:sync_booklists - end
DeviceJob: 3 Send metadata to device done, calling callback
DeviceJob: 3 Send metadata to device callback returned
Job: 4 Backing up Kobo device database started
DEBUG:    0.0 do_device_database_backup - start
logger - do_device_database_backup - start
calibre 7.26.103*  embedded-python: True
Linux-6.6.65-06377-gaae6fc9ba7df-x86_64-with-glibc2.36 Linux ('64bit', 'ELF')
('Linux', '6.6.65-06377-gaae6fc9ba7df', '#1 SMP PREEMPT_DYNAMIC Wed, 8 Jan 2025 13:19:21 -0800')
Python 3.11.5
Interface language: None
EXE path: /opt/calibre/bin/calibre-debug
Successfully initialized third party plugins: DeACSM (0, 0, 16) && LCPL Input (0, 0, 5) && DeDRM (10, 0, 9) && Backup Configuration Folder (1, 1, 2) && EpubMerge (3, 2, 0) && Find Duplicates (1, 10, 9) && Goodreads (1, 8, 2) && Kobo Metadata (1, 10, 0) && Kobo Utilities (2, 18, 4) && Manage Series (1, 5, 2) && OverDrive Libby (0, 2, 3) && Quality Check (1, 13, 16) && Reading List (1, 15, 4) && Standard Ebooks (1, 0, 0)
Traceback (most recent call last):
  File "calibre_plugins.koboutilities.action", line 2136, in check_device_database
    check_result = self._check_device_database()
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "calibre_plugins.koboutilities.action", line 4582, in _check_device_database
    return check_device_database(self.device_database_path())
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "calibre_plugins.koboutilities.common_utils", line 306, in check_device_database
    cursor.execute(check_query)
  File "src/cursor.c", line 1088, in APSWCursor_execute.sqlite3_prepare_v3
apsw.IOError: IOError: disk I/O error

DEBUG:    0.0 do_device_database_backup - backup_options= {'backupDestDirectory': '/home/peterjt/kobobackup', 'backupCopiesToKeepSpin': 5, 'doDailyBackp': False, 'backupEachCOnnection': True, 'backupZipDatabase': True, 'device_name': 'KoboClaraColour', 'serial_number': 'N4283C0013322', 'backup_file_template': 'KoboReader-{0}-{1}-{2}', 'database_file': '/mnt/chromeos/removable/KOBOeReader/.kobo/KoboReader.sqlite', 'device_path': '/mnt/chromeos/removable/KOBOeReader/'}
DEBUG:    0.0 do_device_database_backup - copies_to_keep= 5
DEBUG:    0.0 do_device_database_backup - backup_file_name=KoboReader-KoboClaraColour-N4283C0013322-20250309-135224
DEBUG:    0.0 do_device_database_backup - backup_file_path=/home/peterjt/kobobackup/KoboReader-KoboClaraColour-N4283C0013322-20250309-135224.sqlite
DEBUG:    0.0 do_device_database_backup - database_file=/mnt/chromeos/removable/KOBOeReader/.kobo/KoboReader.sqlite
Job: 3 Send metadata to device finished
No details available.
DEBUG:    0.5 do_device_database_backup - bookreader_backup_file_name=BookReader-KoboClaraColour-N4283C0013322-20250309-135224
DEBUG:    0.5 do_device_database_backup - bookreader_backup_file_path=/home/peterjt/kobobackup/BookReader-KoboClaraColour-N4283C0013322-20250309-135224.sqlite
DEBUG:    0.5 do_device_database_backup - bookreader_database_file=/mnt/chromeos/removable/KOBOeReader/.kobo/BookReader.sqlite
DEBUG:   29.9 _check_device_database - result line= ('ok',)
DEBUG:    0.8 do_device_database_backup - config_backup_path=/home/peterjt/kobobackup/KoboReader-KoboClaraColour-N4283C0013322-20250309-135224.zip
DEBUG:    0.8 do_device_database_backup:backup_file - file_to_add=/mnt/chromeos/removable/KOBOeReader/.kobo/Kobo/Kobo eReader.conf
DEBUG:    0.8 do_device_database_backup:backup_file - file_to_add=/mnt/chromeos/removable/KOBOeReader/.kobo/version
DEBUG:    0.8 do_device_database_backup:backup_file - file_to_add=/mnt/chromeos/removable/KOBOeReader/.kobo/affiliate.conf
DEBUG:    0.8 do_device_database_backup:backup_file - file_to_add=/mnt/chromeos/removable/KOBOeReader/.adobe-digital-editions
DEBUG:    0.8 do_device_database_backup:backup_file - file_to_add=/mnt/chromeos/removable/KOBOeReader/.adobe-digital-editions/device.xml
DEBUG:    0.8 do_device_database_backup - adding database KoboReader to zip file=/home/peterjt/kobobackup/KoboReader-KoboClaraColour-N4283C0013322-20250309-135224.sqlite
DEBUG:    0.8 do_device_database_backup:backup_file - file_to_add=/home/peterjt/kobobackup/KoboReader-KoboClaraColour-N4283C0013322-20250309-135224.sqlite
DEBUG:    2.0 do_device_database_backup - adding database BookReader to zip file=/home/peterjt/kobobackup/BookReader-KoboClaraColour-N4283C0013322-20250309-135224.sqlite
DEBUG:    2.0 do_device_database_backup:backup_file - file_to_add=/home/peterjt/kobobackup/BookReader-KoboClaraColour-N4283C0013322-20250309-135224.sqlite
DEBUG:    2.0 do_device_database_backup - copies to keep:5
DEBUG:    2.0 do_device_database_backup - backup_file_search= KoboReader-KoboClaraColour-N4283C0013322-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]
DEBUG:    2.0 do_device_database_backup - db_backup_file_search= /home/peterjt/kobobackup/KoboReader-KoboClaraColour-N4283C0013322-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9].sqlite
DEBUG:    2.0 do_device_database_backup - backup_files= []
DEBUG:    2.0 do_device_database_backup - backup_files= []
DEBUG:    2.0 do_device_database_backup - len(backup_files) - copies_to_keep= -5
DEBUG:    2.0 do_device_database_backup - config_backup_file_search= /home/peterjt/kobobackup/KoboReader-KoboClaraColour-N4283C0013322-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9].zip
DEBUG:    2.0 do_device_database_backup - backup_files= ['/home/peterjt/kobobackup/KoboReader-KoboClaraColour-N4283C0013322-20250308-095202.zip']
DEBUG:    2.0 do_device_database_backup - len(backup_files) - copies_to_keep= 1
DEBUG:    2.0 do_device_database_backup - removing backup file: /home/peterjt/kobobackup/KoboReader-KoboClaraColour-N4283C0013322-20250308-095202.zip
DEBUG:    2.0 do_device_database_backup - Removing old backups - finished
DeviceJob: 4 Backing up Kobo device database done, calling callback
DeviceJob: 4 Backing up Kobo device database callback returned
Job: 4 Backing up Kobo device database finished
No details available.
DEBUG:   42.0 Have a Kobo device connected connected
DEBUG:   42.0 BEGIN Get Device Path
DEBUG:   42.0 Root path of device: /mnt/chromeos/removable/KOBOeReader/
DEBUG:   42.0 END Get Device Path
DEBUG:   42.0 KoboUtilities:get_device - self.device_path="/mnt/chromeos/removable/KOBOeReader/"
DEBUG:   42.0 KoboUtilities:get_device - drive_info: {'main': {'device_store_uuid': '9cb03268-113b-4d0a-9065-f9d8a4ff2278', 'device_name': 'Kobo Libra Colour', 'location_code': 'main', 'last_library_uuid': 'd1da7663-faf7-415f-8e8e-df0b96a35965', 'calibre_version': '7.26.103', 'date_last_connected': '2025-03-09T17:52:17.644250+00:00', 'prefix': '/mnt/chromeos/removable/KOBOeReader/'}}
DEBUG:   42.0 migrate_library_config_if_required - start
DEBUG:   42.0 get_library_config - library_config: {'SchemaVersion': 0.1, 'profiles': {'Default': {'customColumnOptions': {'currentReadingLocationColumn': '', 'lastReadColumn': '', 'percentReadColumn': '', 'ratingColumn': 'rating', 'restOfBookEstimateColumn': '', 'timeSpentReadingColumn': ''}, 'forDevice': None, 'storeOptionsStore': {'doNotStoreIfReopened': False, 'promptToStore': True, 'storeIfMoreRecent': False, 'storeOnConnect': False}}}}
DEBUG:   42.0 KoboUtilities:get_device - device_name: Kobo Libra Colour
DEBUG:   42.0 get_plugin_pref - start - store_name='commonOptionsStore', option='individualDeviceOptions'
DEBUG:   42.0 get_prefs - start - store_name='backupOptionsStore'
DEBUG:   42.0 BEGIN Get Device Path
DEBUG:   42.0 Root path of device: /mnt/chromeos/removable/KOBOeReader/
DEBUG:   42.0 END Get Device Path
DEBUG:   49.0 Have a Kobo device connected connected
DEBUG:   49.0 BEGIN Get Device Path
DEBUG:   49.0 Root path of device: /mnt/chromeos/removable/KOBOeReader/
DEBUG:   49.0 END Get Device Path
DEBUG:   49.0 KoboUtilities:get_device - self.device_path="/mnt/chromeos/removable/KOBOeReader/"
DEBUG:   49.0 KoboUtilities:get_device - drive_info: {'main': {'device_store_uuid': '9cb03268-113b-4d0a-9065-f9d8a4ff2278', 'device_name': 'Kobo Libra Colour', 'location_code': 'main', 'last_library_uuid': 'd1da7663-faf7-415f-8e8e-df0b96a35965', 'calibre_version': '7.26.103', 'date_last_connected': '2025-03-09T17:52:17.644250+00:00', 'prefix': '/mnt/chromeos/removable/KOBOeReader/'}}
DEBUG:   49.0 migrate_library_config_if_required - start
DEBUG:   49.0 get_library_config - library_config: {'SchemaVersion': 0.1, 'profiles': {'Default': {'customColumnOptions': {'currentReadingLocationColumn': '', 'lastReadColumn': '', 'percentReadColumn': '', 'ratingColumn': 'rating', 'restOfBookEstimateColumn': '', 'timeSpentReadingColumn': ''}, 'forDevice': None, 'storeOptionsStore': {'doNotStoreIfReopened': False, 'promptToStore': True, 'storeIfMoreRecent': False, 'storeOnConnect': False}}}}
DEBUG:   49.0 KoboUtilities:get_device - device_name: Kobo Libra Colour
DEBUG:   49.0 get_plugin_pref - start - store_name='commonOptionsStore', option='individualDeviceOptions'
DEBUG:   49.0 get_prefs - start - store_name='backupOptionsStore'
DEBUG:   49.0 rebuild_menus - self.supports_ratings=True, self.supports_tiles=True
DEBUG:   49.0 KoboUtilities:set_toolbar_button_tooltip - start: text='None'
DEBUG:   49.0 KoboUtilities:set_toolbar_button_tooltip - device connected. self.device.fwversion= (4, 41, 23145)
DEBUG:   49.0 KoboUtilities:set_toolbar_button_tooltip - setting to text='Utilities to use with Kobo ereaders

Connected Device: Kobo Libra Colour
Firmware version: 4.41.23145
Driver: KoboTouch'
DEBUG:   49.0 rebuild_menus - have device.
DEBUG:   53.3 vacuum_device_database - start
DEBUG:   53.3 Have a Kobo device connected connected
DEBUG:   53.3 BEGIN Get Device Path
DEBUG:   53.3 Root path of device: /mnt/chromeos/removable/KOBOeReader/
DEBUG:   53.3 END Get Device Path
DEBUG:   53.3 calibre 7.26.103*  embedded-python: True
Linux-6.6.65-06377-gaae6fc9ba7df-x86_64-with-glibc2.36 Linux ('64bit', 'ELF')
('Linux', '6.6.65-06377-gaae6fc9ba7df', '#1 SMP PREEMPT_DYNAMIC Wed, 8 Jan 2025 13:19:21 -0800')
Python 3.11.5
Interface language: None
EXE path: /opt/calibre/bin/calibre-debug
Successfully initialized third party plugins: DeACSM (0, 0, 16) && LCPL Input (0, 0, 5) && DeDRM (10, 0, 9) && Backup Configuration Folder (1, 1, 2) && EpubMerge (3, 2, 0) && Find Duplicates (1, 10, 9) && Goodreads (1, 8, 2) && Kobo Metadata (1, 10, 0) && Kobo Utilities (2, 18, 4) && Manage Series (1, 5, 2) && OverDrive Libby (0, 2, 3) && Quality Check (1, 13, 16) && Reading List (1, 15, 4) && Standard Ebooks (1, 0, 0)
Traceback (most recent call last):
  File "calibre_plugins.koboutilities.action", line 2202, in vacuum_device_database
    vacuum_result = self._vacuum_device_database()
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "calibre_plugins.koboutilities.action", line 4621, in _vacuum_device_database
    cursor.execute(compress_query)
  File "src/cursor.c", line 240, in resetcursor
apsw.IOError: IOError: disk I/O error

KoboUtilities:get_device - self.device_path="/mnt/chromeos/removable/KOBOeReader/"
DEBUG:   53.3 KoboUtilities:get_device - drive_info: {'main': {'device_store_uuid': '9cb03268-113b-4d0a-9065-f9d8a4ff2278', 'device_name': 'Kobo Libra Colour', 'location_code': 'main', 'last_library_uuid': 'd1da7663-faf7-415f-8e8e-df0b96a35965', 'calibre_version': '7.26.103', 'date_last_connected': '2025-03-09T17:52:17.644250+00:00', 'prefix': '/mnt/chromeos/removable/KOBOeReader/'}}
DEBUG:   53.3 migrate_library_config_if_required - start
DEBUG:   53.3 get_library_config - library_config: {'SchemaVersion': 0.1, 'profiles': {'Default': {'customColumnOptions': {'currentReadingLocationColumn': '', 'lastReadColumn': '', 'percentReadColumn': '', 'ratingColumn': 'rating', 'restOfBookEstimateColumn': '', 'timeSpentReadingColumn': ''}, 'forDevice': None, 'storeOptionsStore': {'doNotStoreIfReopened': False, 'promptToStore': True, 'storeIfMoreRecent': False, 'storeOnConnect': False}}}}
DEBUG:   53.3 KoboUtilities:get_device - device_name: Kobo Libra Colour
DEBUG:   53.3 get_plugin_pref - start - store_name='commonOptionsStore', option='individualDeviceOptions'
DEBUG:   53.3 get_prefs - start - store_name='backupOptionsStore'
DEBUG:   53.3 BEGIN Get Device Path
DEBUG:   53.3 Root path of device: /mnt/chromeos/removable/KOBOeReader/
DEBUG:   53.3 END Get Device Path
DEBUG:   61.1 KoboUtilities:_on_device_connection_changed - self.plugin_device_connection_changed.__class__:  <class 'PyQt6.QtCore.pyqtBoundSignal'>
DEBUG:   61.1 Methods for self.plugin_device_connection_changed:  ['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'connect', 'disconnect', 'emit', 'signal']
DEBUG:   61.1 KoboUtilites:_on_device_connection_changed - Device disconnected
DEBUG:   61.1 No Kobo Touch, Glo or Mini appears to be connected
DEBUG:   61.1 rebuild_menus - self.supports_ratings=None, self.supports_tiles=None
DEBUG:   61.1 KoboUtilities:set_toolbar_button_tooltip - start: text='None'
DEBUG:   61.1 device_driver_name - could not load extended driver. Exception= No module named 'calibre_plugins.kobotouch_extended'
DEBUG:   61.1 KoboUtilities:set_toolbar_button_tooltip - setting to text='Utilities to use with Kobo ereaders

Driver: KoboTouch'
DEBUG:   61.1 device_driver_name - could not load extended driver. Exception= No module named 'calibre_plugins.kobotouch_extended'
DEBUG:   61.1 KoboUtilities:set_toolbar_button_tooltip - start: text='None'
DEBUG:   61.1 device_driver_name - could not load extended driver. Exception= No module named 'calibre_plugins.kobotouch_extended'
DEBUG:   61.1 KoboUtilities:set_toolbar_button_tooltip - setting to text='Utilities to use with Kobo ereaders

Driver: KoboTouch'
READING LIST: Device disconnected
[66.17] Shutdown starting...
[66.46] [Backup Configuration Folder]: starting backup process
[69.57] [Backup Configuration Folder]: wrote config backup to /home/peterjt/work/backup/backup-calibre/2025-03-09 at 13-52-59.zip. Size: 37,578,558 bytes.
[69.58] [Backup Configuration Folder]: finished
[71.64] Shutdown complete, quitting...
PeterT is offline   Reply With Quote
Old 03-09-2025, 03:37 PM   #122
Quoth
Still reading
Quoth ought to be getting tired of karma fortunes by now.Quoth ought to be getting tired of karma fortunes by now.Quoth ought to be getting tired of karma fortunes by now.Quoth ought to be getting tired of karma fortunes by now.Quoth ought to be getting tired of karma fortunes by now.Quoth ought to be getting tired of karma fortunes by now.Quoth ought to be getting tired of karma fortunes by now.Quoth ought to be getting tired of karma fortunes by now.Quoth ought to be getting tired of karma fortunes by now.Quoth ought to be getting tired of karma fortunes by now.Quoth ought to be getting tired of karma fortunes by now.
 
Quoth's Avatar
 
Posts: 14,045
Karma: 105092227
Join Date: Jun 2017
Location: Ireland
Device: All 4 Kinds: epub eink, Kindle, android eink, NxtPaper
Well, the Chromebook is the best value "netbook" / small laptop running Linux, so it may become more popular. Might be outselling Windows & mac laptops in USA non-corporate now.

So important "edge case".
Quoth is offline   Reply With Quote
Old 03-09-2025, 05:25 PM   #123
compurandom
Wizard
compurandom ought to be getting tired of karma fortunes by now.compurandom ought to be getting tired of karma fortunes by now.compurandom ought to be getting tired of karma fortunes by now.compurandom ought to be getting tired of karma fortunes by now.compurandom ought to be getting tired of karma fortunes by now.compurandom ought to be getting tired of karma fortunes by now.compurandom ought to be getting tired of karma fortunes by now.compurandom ought to be getting tired of karma fortunes by now.compurandom ought to be getting tired of karma fortunes by now.compurandom ought to be getting tired of karma fortunes by now.compurandom ought to be getting tired of karma fortunes by now.
 
Posts: 1,012
Karma: 500000
Join Date: Jun 2015
Device: Rocketbook, kobo aura h2o, kobo forma, kobo libra color
Quote:
Originally Posted by JSWolf View Post
What I think would work well is an option
Yes, I said an editable list of things to back up would be nice.
compurandom is offline   Reply With Quote
Old 03-10-2025, 04:37 AM   #124
Majutsushi
Connoisseur
Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.
 
Posts: 99
Karma: 8592
Join Date: Aug 2023
Location: New Zealand
Device: Kobo Clara HD, Kobo Libra Colour
Quote:
Originally Posted by PeterT View Post
This is probably a rather unusual edge case.

...
Thanks for letting me know, and for testing the current functionality. If it's just those two operations that are failing then it probably shouldn't be too difficult to make it work on Chromebooks. I've created https://github.com/majutsushi/kobo-utilities/issues/10 to track this, although since I don't have a Chromebook myself I can only do limited testing.
Majutsushi is online now   Reply With Quote
Old 03-10-2025, 04:46 AM   #125
Majutsushi
Connoisseur
Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.
 
Posts: 99
Karma: 8592
Join Date: Aug 2023
Location: New Zealand
Device: Kobo Clara HD, Kobo Libra Colour
I'm about to create a new release with a few changes and a bunch of internal improvements.

The user-visible changes are:
  • Removed support for modifying home tiles as it is not supported in current firmware versions
  • Fixed an issue that prevented device rename and delete buttons from being enabled when only one device was registered

Due to the various internal changes it would be great if a few people could test out this build to make sure I didn't break anything. Most of the changes are benign but you never know what kind of edge cases I might have missed in my own testing. Thanks!
Attached Files
File Type: zip KoboUtilities-v2.18.4-27-g96e415e.zip (307.3 KB, 58 views)
Majutsushi is online now   Reply With Quote
Old 03-10-2025, 05:04 AM   #126
Majutsushi
Connoisseur
Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.
 
Posts: 99
Karma: 8592
Join Date: Aug 2023
Location: New Zealand
Device: Kobo Clara HD, Kobo Libra Colour
Hmm, looking at the recent Calibre changes I may have to make some changes anyway to keep the plugin working. I'll do some testing.
Majutsushi is online now   Reply With Quote
Old 03-10-2025, 05:13 AM   #127
ownedbycats
Custom User Title
ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.
 
ownedbycats's Avatar
 
Posts: 10,975
Karma: 75337983
Join Date: Oct 2018
Location: Canada
Device: Kobo Libra H2O, formerly Aura HD
Quote:
Originally Posted by Majutsushi View Post
Hmm, looking at the recent Calibre changes I may have to make some changes anyway to keep the plugin working. I'll do some testing.
I have not noticed anything breaking on preview 103, but I don't use every feature.
ownedbycats is offline   Reply With Quote
Old 03-10-2025, 05:32 AM   #128
Majutsushi
Connoisseur
Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.
 
Posts: 99
Karma: 8592
Join Date: Aug 2023
Location: New Zealand
Device: Kobo Clara HD, Kobo Libra Colour
Quote:
Originally Posted by ownedbycats View Post
I have not noticed anything breaking on preview 103, but I don't use every feature.
Odd, according to the commit the database connection methods have changed, and so no feature that tries to access the device database should work, unless I'm missing something (which is possible since it's quite late). It also looks like the replacement is only available in the KOBOTOUCH class, not the base KOBO one that is used for the ancient original devices. I'll look into it in the next few days.

Edit: I just realized why it still works, the plugin creates its own connection if it can't get the one from the Calibre driver. So it would probably make sense to use the new functionality when available and leave the fallback in place. That may also fix the Chromebook issue above.

Last edited by Majutsushi; 03-10-2025 at 05:37 AM.
Majutsushi is online now   Reply With Quote
Old 03-10-2025, 06:11 AM   #129
Majutsushi
Connoisseur
Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.
 
Posts: 99
Karma: 8592
Join Date: Aug 2023
Location: New Zealand
Device: Kobo Clara HD, Kobo Libra Colour
Okay, it looks like I can't just use the new DB functionality since it's inherently tied to transactions, which means using it would result in the same vacuuming error that I fixed recently. So for now I would have to create a plugin-specific connection for normal operations (what the current fallback is doing) and probably duplicate the copying behaviour for the cases that are failing on Chromebooks.
Majutsushi is online now   Reply With Quote
Old 03-10-2025, 06:21 AM   #130
ownedbycats
Custom User Title
ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.ownedbycats ought to be getting tired of karma fortunes by now.
 
ownedbycats's Avatar
 
Posts: 10,975
Karma: 75337983
Join Date: Oct 2018
Location: Canada
Device: Kobo Libra H2O, formerly Aura HD
Running from current source seems to work. Unless I misunderstoood?

Click image for larger version

Name:	2025-03-10 07_20_41-Window.png
Views:	81
Size:	13.2 KB
ID:	214244
ownedbycats is offline   Reply With Quote
Old 03-10-2025, 06:29 AM   #131
Majutsushi
Connoisseur
Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.
 
Posts: 99
Karma: 8592
Join Date: Aug 2023
Location: New Zealand
Device: Kobo Clara HD, Kobo Libra Colour
Quote:
Originally Posted by ownedbycats View Post
Running from current source seems to work. Unless I misunderstoood?

Attachment 214244
Yeah, it currently works because the plugin falls back to its own connection. I meant that if I wanted to make use of the new DB methods then it wouldn't work any more for this case.
Majutsushi is online now   Reply With Quote
Old 03-10-2025, 07:09 AM   #132
Majutsushi
Connoisseur
Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.Majutsushi shines like a glazed doughnut.
 
Posts: 99
Karma: 8592
Join Date: Aug 2023
Location: New Zealand
Device: Kobo Clara HD, Kobo Libra Colour
Looking at how the new DB functionality works by copying data between the device database and a temporary one (using Connection.backup()), I'm not sure the two failing database operations make sense to run on the temporary database. Vacuuming the temporary database should have no effect on the original database since it's not part of the data that would be copied, and similarly with the database checking. So the best thing I can probably do is catch the error and present a friendlier error message.

Edit: Vacuuming may not even be necessary in this situation anyway since the data copying may have a similar effect by its very nature.

Last edited by Majutsushi; 03-10-2025 at 07:17 AM.
Majutsushi is online now   Reply With Quote
Old 03-11-2025, 06:52 PM   #133
Lavender
Connoisseur
Lavender ought to be getting tired of karma fortunes by now.Lavender ought to be getting tired of karma fortunes by now.Lavender ought to be getting tired of karma fortunes by now.Lavender ought to be getting tired of karma fortunes by now.Lavender ought to be getting tired of karma fortunes by now.Lavender ought to be getting tired of karma fortunes by now.Lavender ought to be getting tired of karma fortunes by now.Lavender ought to be getting tired of karma fortunes by now.Lavender ought to be getting tired of karma fortunes by now.Lavender ought to be getting tired of karma fortunes by now.Lavender ought to be getting tired of karma fortunes by now.
 
Lavender's Avatar
 
Posts: 82
Karma: 514138
Join Date: Jan 2025
Device: Kobo Clara BW
Just ordered my first dedicated ereader. I chose the kobo clara BW. I know this is a newer model. Will it work with this plugin?
Lavender is offline   Reply With Quote
Old 03-11-2025, 07:17 PM   #134
JSWolf
Resident Curmudgeon
JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.JSWolf ought to be getting tired of karma fortunes by now.
 
JSWolf's Avatar
 
Posts: 79,758
Karma: 145864619
Join Date: Nov 2006
Location: Roslindale, Massachusetts
Device: Kobo Libra 2, Kobo Aura H2O, PRS-650, PRS-T1, nook STR, PW3
Quote:
Originally Posted by Lavender View Post
Just ordered my first dedicated ereader. I chose the kobo clara BW. I know this is a newer model. Will it work with this plugin?
Yes, the Clara BW will work with Kobo Utilities.
JSWolf is offline   Reply With Quote
Old 03-13-2025, 04:13 AM   #135
DNSB
Bibliophagist
DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.DNSB ought to be getting tired of karma fortunes by now.
 
DNSB's Avatar
 
Posts: 46,243
Karma: 168983734
Join Date: Jul 2010
Location: Vancouver
Device: Kobo Sage, Libra Colour, Lenovo M8 FHD, Paperwhite 4, Tolino epos
I've run into an issue when ejecting a Kobo ereader either using the Smart Eject plugin or using the Eject this device option on the Device menu. calibre version is 7.26.103 running from latest source on Windows 11, Kobo Utilities version is 2.18.4 (the test version). I also—if I did the steps properly—have reported the issue on the calibre bug tracker.

Error message is:
Spoiler:
Code:
calibre, version 7.26.103
ERROR: Unhandled exception: <b>TypeError</b>:expected str, bytes or os.PathLike object, not NoneType

calibre 7.26.103*  embedded-python: True
Windows-10-10.0.26100-SP0 Windows ('64bit', 'WindowsPE')
('Windows', '10', '10.0.26100')
Python 3.11.5
Windows: ('10', '10.0.26100', 'SP0', 'Multiprocessor Free')
Interface language: None
EXE path: C:\Program Files\Calibre2\calibre.exe
Successfully initialized third party plugins: ACSM Input (0, 1, 0) && LCPL Input (0, 0, 5) && Gather KFX-ZIP (from KFX Input) (2, 22, 0) && DeDRM (10, 0, 9) && AZW6 Image Merge (1, 1, 1) && Package KFX (from KFX Input) (2, 22, 0) && ACSM Input Plugin GUI Extension (0, 1, 0) && Apple Books covers (0, 2, 0) && Backup Configuration Folder (1, 1, 2) && Barnes & Noble (1, 5, 6) && Count Pages (1, 13, 6) && Diaps Editing Toolbag (0, 5, 0) && EpubCheck (0, 2, 5) && EpubMerge (3, 2, 0) && EpubSplit (3, 10, 0) && FanFicFare (4, 43, 0) && Find Duplicates (1, 10, 9) && Generate Cover (2, 3, 5) && Goodreads (1, 8, 2) && Job Spy (1, 0, 239) && KFX metadata reader (from KFX Input) (2, 22, 0) && From KFX (2, 22, 0) && KFX Input (2, 22, 0) && Set KFX metadata (from KFX Output) (2, 14, 0) && KFX Output (2, 14, 0) && Kindle hi-res covers (0, 5, 1) && KindleUnpack - The Plugin (0, 83, 7) && Kobo Metadata (1, 10, 0) && Kobo Utilities (2, 18, 4) && Modify ePub (1, 8, 5) && Obok DeDRM (10, 0, 9) && Open With (1, 8, 4) && OverDrive Libby (0, 2, 3) && Quality Check (1, 13, 16) && Resize Cover (1, 2, 1) && ScrambleEbook (0, 6, 0) && SmartEject (2, 6, 0) && Smashwords Metadata (1, 0, 2)
Traceback (most recent call last):
  File "calibre_plugins.koboutilities.action", line 318, in _on_device_connection_changed
  File "calibre_plugins.koboutilities.action", line 380, in rebuild_menus
  File "calibre_plugins.koboutilities.action", line 2665, in get_device
  File "d:\calibre\calibre-master\src\calibre\devices\kobo\driver.py", line 185, in device_version_info
  File "ntpath.py", line 108, in join
TypeError: expected str, bytes or os.PathLike object, not NoneType


Edit: report on calibre bug tracker rejected as third party plugin issue.

Edit 2: Went to change the customization and got an error. Found a block of garbage at the end of the KoboUtilities.json file so renamed and rebuilt. Worked once and then back to the error when ejecting. The .json file still looked okay.

Last edited by DNSB; 03-13-2025 at 02:52 PM.
DNSB is online now   Reply With Quote
Reply


Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
[GUI Plugin] Kobo Utilities davidfor Plugins 3216 02-08-2025 04:23 AM
[GUI Plugin] Noosfere_util, a companion plugin to noosfere DB lrpirlet Plugins 2 08-18-2022 03:15 PM
[GUI Plugin] Save Virtual Libraries To Column (GUI) chaley Plugins 14 04-04-2021 05:25 AM
Kobo Utilities Plugin Question nikev Kobo Reader 10 09-25-2018 11:55 PM


All times are GMT -4. The time now is 02:20 AM.


MobileRead.com is a privately owned, operated and funded community.