My last post was about the GUI plugin for calibre to generate APNX files. While it seems the Kindle apps (Kindle for Mac, Kindle4PC and Kindle for iPhone / iPad) don’t like APNX files with non Amazon ebooks.

A number of people complained that the APNX files generated with the GUI plugin were not working on their Kindle apps. I looked into it and what I discovered is not very encouraging. First the problem. If you take a MOBI file (generated with calibre for instance) and create an APNX file; then put those two files in the “My Kindle Content” directory the book will open but the page numbers will not display. The strange thing about this issue is the GUI plugin outputs the same APNX files as transferring to a Kindle via “Send to Device.” These generated APNX files are known to work on Kindles.

I installed the Kindle for Mac application and came to some startling conclusions about how Amazon is handling page numbers in their Kindle apps. Fortunately, the Kindle for Mac install comes with a few DRM free books that have APNX files. I looked at these Amazon provided APNX files and couldn’t find any real difference between them and the APNX files I generate with calibre.

When I first opened the application and selected a book I noticed there were no page numbers. Since I was only using this for testing and I was planning on removing the app after I finished I did not tie it to my Amazon account and I also had my firewall deny outbound connections for the app. After a time closing and opening the Kindle app page numbers were still not appearing.

I did some searching online and found an Amazon help page that had a few suggestions for page numbers not displaying. The first item is “Wait a few minutes: It may take several minutes for page numbers to become visible.” I can see this being the case if it needs to download the APNX file but all three of the books it comes with have APNX files…

I compared the Kindle for Mac’s configuration and cache directories before and after allowing it to connect to the internet. It appears that the Kindle for Mac app must connect to https://kindle-app-services.amazon.com (there is no web server at this url) before the app will display page numbers.

Once the app will exchange an encrypted question and receive an encrypted answer for Amazon. New encrypted values are then written to ~/Library/Application Support/Kindle/storage/.kindle-info.

The .kindle-info file holds a variety of different things. For instance, on my system removing the following will cause the app to ask me to agree to the Terms of Use.

[0TB-ZJBABgbzb3ZgZPBKZP0vbs0gB4Zb:bK0B0hZOBHbYZNBtZDBablZYZKbUbk0U]

mrsquash on MobileRead did some further testing of APNX files in the Kindle app. He was able to have the Kindle app display page numbers using calibre generate APNX files for Amazon provided ebooks. I did some testing myself and I can swap APNX files for Amazon ebooks.

This leads me to believe that the Kindle app(s) will only display page numbers once it has communicated with Amazon and verified the ebook file is from Amazon. The reasons I’ve come to this conclusion are: 1) Generated APNX files work on the Kindle and on Amazon ebooks. 2) APNX files can be swapped between Amazon ebooks. 3) Only non-Amazon ebooks do not display page numbers with a generated APNX or with an APNX from an Amazon ebook. My suspicion is Amazon is doing this purposely and restricting the displaying of page numbers to force people to buy from Amazon and not a third party.