Skip to content

Instantly share code, notes, and snippets.

@pgaskin
Last active July 17, 2023 16:10
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pgaskin/613b34c23f026f7c39c50ee32f5e167e to your computer and use it in GitHub Desktop.
Save pgaskin/613b34c23f026f7c39c50ee32f5e167e to your computer and use it in GitHub Desktop.
Kobo device information based on 4.18.13737
# 1. create top-level classes from Device::codeName(QString)
# 2. split into legacy and current based on if class in Device::getDeviceClassString() is based on Device::codeName
# 3. add legacy families under top-level classes, codename=classname and Name is from Device::getDeviceClassString()
# 4. add legacy device ids under families from Device::codeName(QString)
# 5. skip current families for now, add device ids from Device::codeName(QString)
# 6. add device names from known values to those devices
# 7. split current devices into families based on Device::codeName(bool), remaining ones have a matching classname
# 8. add family names from Device::getDeviceClassString()
#
# 9. add full values for most specific (codename, then classname) thingies from Image::sizeForType(Device)
# 10. if any devices without full values, add them based on the default match (600x800), except for the snow (1080x1440), frost (1440x1920), and dahlia (1080x1429), which for some reason are not in the firmware and need to be overridden for optimal results.
# 11. add default liblist (600x800) and libgrid (60x90) values
#
# 12. add hardware revisions to devices based on UpgradeCheck API (it's the simplest way to get at them)
#
# 13. add storage capacity in GB to devices from StorageUtil::getDeviceAdvertisedStorageCapacityStringInGB
#
# 14. add secondary codenames to devices based on function list of Device::is*
Defaults:
Full: &default-full 600x800
LibFull: &default-libfull 355x530
LibList: &default-liblist 60x90
LibGrid: &default-libgrid 149x223
LegacyFamilies:
- ClassName: desktop
Families:
- CodeName: desktop
Name: Kobo Desktop
Full: *default-full
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 1
- ID: 2
- ID: 3
- ID: 4
- ID: 5
- ID: 10
- ID: 11
- ID: 12
- ClassName: nickel1
Families:
- CodeName: nickel1
Name: Kobo eReader
Full: *default-full
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 100
- ID: 200
- ID: 201
- ClassName: nickel2
Families:
- CodeName: nickel2
Name: Kobo Wireless eReader
Full: *default-full
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 210
- ClassName: merch
Families:
- CodeName: merch
Name: Literati / LookBook eReader
Full: *default-full
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 300
- ID: 301
- ClassName: vox
Families:
- CodeName: vox
Name: Kobo Vox
Full: *default-full
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 511
CurrentFamilies:
- ClassName: trilogy
Families:
- CodeName: trilogy
Name: Kobo Touch
Full: *default-full
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 310
Name: Kobo Touch A/B
Hardware: 3
Storage: 2
- ID: 320
Name: Kobo Touch C
Hardware: 4
Storage: 2
- CodeName: pixie
Name: Kobo Mini
Full: *default-full
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 340
Name: Kobo Mini
Hardware: 4
Storage: 2
- CodeName: pika
Name: Kobo Touch 2.0
Full: *default-full
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 372
Name: Kobo Touch 2.0
Hardware: 6
Storage: 4
- ClassName: dragon
Families:
- CodeName: dragon
Name: Kobo Aura HD
Full: 1080x1440
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 350
Name: Kobo Aura HD
Hardware: 4
Storage: 4
- CodeName: dahlia
Name: Kobo Aura H2O
Full: 1080x1429
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 370
Name: Kobo Aura H2O
Hardware: 5
Storage: 4
- CodeName: alyssum
Name: Kobo Glo HD
Full: 1072x1448
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 371
Name: Kobo Glo HD
Hardware: 6
Storage: 4
- CodeName: snow
Name: Kobo Aura H2O Edition 2
Full: 1080x1440
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 374
Name: Kobo Aura H2O Edition 2 v1
Hardware: 6
Storage: 8
- ID: 378
Name: Kobo Aura H2O Edition 2 v2
Hardware: 7
Storage: 8
- CodeName: nova
Name: Kobo Clara HD
Full: 1072x1448
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 376
Name: Kobo Clara HD
Hardware: 7
Storage: 8
- CodeName: storm
Name: Kobo Libra H2O
Full: 1264x1680
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 384
Name: Kobo Libra H2O
Hardware: 7
Storage: 8
- ClassName: daylight
Families:
- CodeName: daylight
Name: Kobo Aura ONE
Full: 1404x1872
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 373
Name: Kobo Aura ONE
Hardware: 6
Storage: 8
- ID: 381
Name: Kobo Aura ONE Limited Edition
SecondaryCodeName: superDaylight
Hardware: 6
Storage: 32
- CodeName: frost
Name: Kobo Forma
Full: 1440x1920
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 380
Name: Kobo Forma 32GB
SecondaryCodeName: frost32
Hardware: 7
Storage: 32
- ID: 377
Name: Kobo Forma
Hardware: 7
Storage: 8
- ClassName: phoenix
Families:
- CodeName: phoenix
Name: Kobo Aura
Full: 758x1014
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 360
Name: Kobo Aura
Hardware: 5
Storage: 4
- CodeName: kraken
Name: Kobo Glo
Full: 758x1024
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 330
Name: Kobo Glo
Hardware: 4
Storage: 4
- CodeName: star
Name: Kobo Aura
Full: 758x1024
LibFull: *default-libfull
LibList: *default-liblist
LibGrid: *default-libgrid
Devices:
- ID: 375
Name: Kobo Aura Edition 2 v1
Hardware: 6
Storage: 4
- ID: 379
Name: Kobo Aura Edition 2 v2
Hardware: 7
Storage: 4
My initial research:
Here are the values in code order for various device-specific stuff in nickel as of 13737. These are exactly as they appear in libnickel, without adding missing values to make it usable.
There seem to be two codename types: one for identifying individual devices, and an abbreviated one for things like CSS.
Device::getDeviceClassString(), mapping from Device::is* to a string, falls back to Device::codeName when not matching anything
trilogy, Kobo Touch
kraken, Kobo Glo
pixie, Kobo Mini
phoenix, Kobo Aura
dragon, Kobo Aura HD
dahlia, Kobo Aura H2O
alyssum, Kobo Glo HD
pika, Kobo Touch 2.0
daylight, Kobo Aura ONE
star, Kobo Aura
storm, Kobo Libra H2O
snow, Kobo Aura H2O Edition 2
nova, Kobo Clara HD
frost, Kobo Forma
Device::codeName == desktop, Kobo Desktop
Device::codeName == vox, Kobo Vox
Device::codeName == merch, Literati / LookBook eReader
Device::codeName == nickel1, Kobo eReader
Device::codeName == nickel2, Kobo Wireless eReader
Device::codeName(QString), mapping from device id to string
1 2 3 4 5 10 11 12, desktop
210, nickel2
100 200 201, nickel1
300 301, merch
310 320 340 372, trilogy
350 370 371 374 376 384 378, dragon
373 380 381 377, daylight
330 360 375 379, phoenix
511, vox
*, unknown
Device::codeName(bool), idk what the bool is for, mapping from device id to string, seems to be missing values, Device::is* matches up with this when assuming the missing values to be the remainders of Device::codeName(QString) (for example 377 and 380 are frost, but the 373 and 381 are daylight)
330, kraken
340, pixie
370, dahlia
371, alyssum
372, pika
374 378, snow
375 379, star
376, nova
377 380, frost
384, storm
Image::sizeForType(Device), mapping from Device::is* to cover size for N3_FULL, fixed for others
N3_LIBRARY_FULL, 355x530
N3_LIBRARY_LIST, 60x90
N3_LIBRARY_GRID, 149x223
MediumGridList, 135x205
iPhoneThumbnail, 104x158
NickelBookCover, 600x600
Default, 600x800
N3_FULL
storm, 1264x1680
daylight, 1404x1872
alyssum nova, 1072x1448
dragon, 1080x1440
kraken star, 758x1024
phoenix, 758x1014
*, 600x800
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment