<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>John&#039;s Blog &#187; device interfaces</title>
	<atom:link href="http://john.nachtimwald.com/tag/device-interfaces/feed/" rel="self" type="application/rss+xml" />
	<link>http://john.nachtimwald.com</link>
	<description>My little blog</description>
	<lastBuildDate>Sat, 31 Jul 2010 17:28:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Calibre Week In Review</title>
		<link>http://john.nachtimwald.com/2010/01/10/calibre-week-in-review-23/</link>
		<comments>http://john.nachtimwald.com/2010/01/10/calibre-week-in-review-23/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 23:30:34 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[calibre]]></category>
		<category><![CDATA[device interfaces]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[prs]]></category>

		<guid isPermaLink="false">http://john.nachtimwald.com/?p=341</guid>
		<description><![CDATA[Kovid just tagged the 0.6.33 release so it should be out the door later today. Only one major feature from me this week. The PRS driver can new customize what gets turned into a collection. The default was and is series and tags. Now under the device interface configuration you can specify any metadata field. [...]]]></description>
			<content:encoded><![CDATA[<p>Kovid just tagged the 0.6.33 release so it should be out the door later today. Only one major feature from me this week. The PRS driver can new customize what gets turned into a collection. The default was and is series and tags. Now under the device interface configuration you can specify any metadata field. The main use for this change is so people who have a large number of tags can disable collections being created from them.</p>
<p>While it&#8217;s not coming out today I have been working on a major feature. Metadata caching for devices. Basically a file that specifies all of the metadata for the books on the reader will be created. It will be used when the device is connected and if any files have changed their metadata will be updated. This  speeds up device detection dramatically. Also, takes up less space than a book so it won&#8217;t use too much space to store it. Right now it&#8217;s storing the data using json so other application can have easy access to the data too. Other than faster device detection this is the ground work that is required to implement syncing.</p>
]]></content:encoded>
			<wfw:commentRss>http://john.nachtimwald.com/2010/01/10/calibre-week-in-review-23/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cybook 2.0 Firmware Calibre Fix</title>
		<link>http://john.nachtimwald.com/2010/01/09/cybook-2-0-firmware-calibre-fix/</link>
		<comments>http://john.nachtimwald.com/2010/01/09/cybook-2-0-firmware-calibre-fix/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 12:33:58 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[calibre]]></category>
		<category><![CDATA[cybook]]></category>
		<category><![CDATA[device interfaces]]></category>

		<guid isPermaLink="false">http://john.nachtimwald.com/?p=338</guid>
		<description><![CDATA[I&#8217;ve committed a fix for the Cybook 2.0 firmware id issue I posted yesterday. In calibre I&#8217;ve combined the Gen 3 and Opus device interfaces into one generic Cybook interface. Both were very similar and the Opus was just a subclass of the Gen 3. Also, with the 2.0 firmware being for both the Gen [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve committed a fix for the Cybook 2.0 firmware <a href="http://john.nachtimwald.com/2010/01/07/cybook-2-0-firmware-identity-issues/">id issue</a> I posted yesterday. In calibre I&#8217;ve combined the Gen 3 and Opus device interfaces into one generic Cybook interface. Both were very similar and the Opus was just a subclass of the Gen 3. Also, with the 2.0 firmware being for both the Gen 3 and Opus there should be no difference in the capabilities of the two devices. If you own an Opus you will still want to use the Opus profile however, when you connect the device it will just show as using the Cybook interface. Also, with the interfaces being combined into one, the device specific configuration is now Cybook / Opus.</p>
<p>There were two reasons for combining the interfaces. I was unable to find a way to differentiate the Gen 3 and the Opus with the 2.0 firmware. A Gen 3 with the 2.0 firmware reports itself as an Opus. I was unable to find a way around this and felt it was better to have a Cybook interface. Also, I have the unfortunate pleasure of owning a Gen 3 which, even before the 2.0 firmware, used the same device ids of the Opus. It however did not use the Opus device strings. Due to this I am unable to determine if the 2.0 firmware changes the ids or just the strings. Combining the two interfaces keeps all Gen 3&#8242;s working and keeps some Gen 3&#8242;s from being detected as the Opus.</p>
]]></content:encoded>
			<wfw:commentRss>http://john.nachtimwald.com/2010/01/09/cybook-2-0-firmware-calibre-fix/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cybook 2.0 Firmware Identity Issues</title>
		<link>http://john.nachtimwald.com/2010/01/07/cybook-2-0-firmware-identity-issues/</link>
		<comments>http://john.nachtimwald.com/2010/01/07/cybook-2-0-firmware-identity-issues/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 12:40:03 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[calibre]]></category>
		<category><![CDATA[bookeen]]></category>
		<category><![CDATA[cybook]]></category>
		<category><![CDATA[device interfaces]]></category>

		<guid isPermaLink="false">http://john.nachtimwald.com/?p=336</guid>
		<description><![CDATA[On Christmas eve Bookeen finally released the long awaited 2.0 firmware for the Cybook Gen 3 and Cybook Opus. As soon as I returned from my Christmas vacation I upgraded my Gen 3 to the 2.0 version. Today while debugging a device issue for calibre I noticed that my Gen 3 kept being detected as [...]]]></description>
			<content:encoded><![CDATA[<p>On Christmas eve <a href="http://bookeen.com/">Bookeen</a> finally released the long awaited 2.0 firmware for the Cybook Gen 3 and Cybook Opus. As soon as I returned from my Christmas vacation I upgraded my Gen 3 to the 2.0 version. Today while debugging a device issue for calibre I noticed that my Gen 3 kept being detected as an Opus. Doing a little digging I found this:</p>
<pre>
$ calibre-debug -d
Version: 0.6.32
USB devices on system:
...
['0xbda', '0x703', '0x110', 'Bookeen', 'Cybook Opus', '600AB038CB09484'],
...
Looking for CYBOOKG3
	(3034, 1795, 272, 'Bookeen', 'Cybook Opus', '600AB038CB09484')
...
Looking for CYBOOK_OPUS
	(3034, 1795, 272, 'Bookeen', 'Cybook Opus', '600AB038CB09484')
...
Devices possibly connected: Cybook Opus Device Interface,
Trying to open Cybook Opus Device Interface ... OK
Main memory: '/media/Cybook Gen3/'
Total space: (495251456L, 0, 0)
</pre>
<p>It seems Bookeen has once again screwed up the firmware release. They wanted one firmware so now every Gen 3 that has updated now has the product identifier set to Opus. The Gen 3 models use a number of different hex product and vendor ids and only the later ones are the same as the opus. Anyone on Linux or OS X with an earlier Gen 3 who is using the 2.0 (possibly 1.5 but I didn&#8217;t test it) firmware will not have their device detected by calibre any longer. This is because once the hex ids are matched there is further matching based on the text ids for Linux and OS X. This isn&#8217;t going to be fun to work around.</p>
]]></content:encoded>
			<wfw:commentRss>http://john.nachtimwald.com/2010/01/07/cybook-2-0-firmware-identity-issues/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Calibre Week In Review</title>
		<link>http://john.nachtimwald.com/2010/01/02/calibre-week-in-review-22/</link>
		<comments>http://john.nachtimwald.com/2010/01/02/calibre-week-in-review-22/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 15:58:43 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[calibre]]></category>
		<category><![CDATA[device interfaces]]></category>
		<category><![CDATA[pml]]></category>
		<category><![CDATA[txt]]></category>

		<guid isPermaLink="false">http://john.nachtimwald.com/?p=331</guid>
		<description><![CDATA[There was a major change this week to the device infrastructure. Kovid merged (with some modification) my changes to allow &#8220;Send to device&#8221; to use custom device paths just like &#8220;Save to disk&#8221;. Kovid&#8217;s major change to my implementation are having a separate save template for &#8220;Send to device&#8221; and allowing for per device overrides [...]]]></description>
			<content:encoded><![CDATA[<p>There was a major change this week to the device infrastructure. Kovid merged (with some modification) my changes to allow &#8220;Send to device&#8221; to use custom device paths just like &#8220;Save to disk&#8221;. Kovid&#8217;s major change to my implementation are having a separate save template for &#8220;Send to device&#8221; and allowing for per device overrides of the template. Kovid and I spent yesterday testing and it is working well. Expect it in the next release. Oh, News and the / tags still work as expected.</p>
<p>I did a little bit of work on TXT and PML output. Now they both honor the &#8220;Remove spacing between paragraphs&#8221; option. Previously TXT output had TXT specific options for this behavior. I&#8217;ve removed them and just use that look and feel option. PML output previously ignored it but now it honors it. So you can have both look more like a printed book than a web page.</p>
]]></content:encoded>
			<wfw:commentRss>http://john.nachtimwald.com/2010/01/02/calibre-week-in-review-22/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calibre Week in Review</title>
		<link>http://john.nachtimwald.com/2009/12/28/calibre-week-in-review-21/</link>
		<comments>http://john.nachtimwald.com/2009/12/28/calibre-week-in-review-21/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 12:11:54 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[calibre]]></category>
		<category><![CDATA[device interfaces]]></category>
		<category><![CDATA[pml]]></category>
		<category><![CDATA[prs300]]></category>
		<category><![CDATA[prs900]]></category>

		<guid isPermaLink="false">http://john.nachtimwald.com/?p=293</guid>
		<description><![CDATA[I spent a bit of time working on calibre this week. I worked on profiles, devices and a bug fix here and there. A few new profiles were added. Specifically profiles for the Sony PRS 300 and 900. They have a different screen size and resolution than the 6&#8243; models so they warranted their own [...]]]></description>
			<content:encoded><![CDATA[<p>I spent a bit of time working on calibre this week. I worked on profiles, devices and a bug fix here and there.</p>
<p>A few new profiles were added. Specifically profiles for the Sony PRS 300 and 900. They have a different screen size and resolution than the 6&#8243; models so they warranted their own profiles.</p>
<p>I added support for two new devices. The Airis Dbook and the Binatone Readme. Along with supporting new devices I also reorganized and renamed a few. The BeBook device interface is not called Hanlin. The BeBook is a rebraned Hanlin. The EZReader, LBook, Eco Reader are also rebranded Hanlins. They all were using the BeBook interface. So I renamed it to be a little more generic and avoid confusion.</p>
<p>One big bug fix this week. There was a typo in the tag map for PML output. It causes italics to be ignore. This has been corrected.</p>
]]></content:encoded>
			<wfw:commentRss>http://john.nachtimwald.com/2009/12/28/calibre-week-in-review-21/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calibre Week in Review</title>
		<link>http://john.nachtimwald.com/2009/12/13/calibre-week-in-review-19/</link>
		<comments>http://john.nachtimwald.com/2009/12/13/calibre-week-in-review-19/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 23:00:44 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[calibre]]></category>
		<category><![CDATA[cybook]]></category>
		<category><![CDATA[device interfaces]]></category>
		<category><![CDATA[fb2]]></category>
		<category><![CDATA[GeR2]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[N770]]></category>
		<category><![CDATA[TOC]]></category>

		<guid isPermaLink="false">http://john.nachtimwald.com/?p=287</guid>
		<description><![CDATA[FB2 output has been improved. It no longer generated very invalid markup. The output generator still isn&#8217;t where I want it to be though. The changes are mostly cleanup and fix long standing issues with the output. One major change is I reverted having &#60;h1&#62; tags work as section and title markers. I don&#8217;t like [...]]]></description>
			<content:encoded><![CDATA[<p>FB2 output has been improved. It no longer generated very invalid markup. The output generator still isn&#8217;t where I want it to be though. The changes are mostly cleanup and fix long standing issues with the output. One major change is I reverted having &lt;h1&gt; tags work as section and title markers. I don&#8217;t like having this hard coded into the generator.</p>
<p>As far as I can tell FB2 does not support a true table of contents (TOC). What seems to happen is reader software will dynamically generate the TOC based on the  appearance of &lt;section&gt;&lt;title&gt;&lt;p&gt;text&lt;/p&gt;&lt;/title&gt; within th e text. If I&#8217;m wrong about this and FB2 really does support an external TOC I would love to know. The &lt;h1&gt; differentiation causes the files to have these sections. I do not like how this is hard coded and dependent on this single tag. Especially since calibre&#8217;s conversion process allows for an XPath expression to be specified to generate TOC point.</p>
<p>I would love to use the TOC sent to the FB2 output generator but this does not seem to be feasible. The problem with the TOC that is sent to the FB2 output generator is how it corresponds to locations in the document. The OEB TOC points are text which may or my not appear in the text and an anchor id. The anchor id is a set point in the document. FB2 section titles are part of the text itself. I cannot use the text from the OEB TOC because it may or may not actually appear in the text. This also prevents me from determining what the text in the document is supposed to be associated with the TOC point. The anchor id points to an anchor in the document but often that point is something like &lt;a id=&#8221;blah&#8221; /&gt;. In this case there is no text associated with the anchor in the document. While I can assume the text following is part of the title I have no fool proof way to determine where it stops.</p>
<p>At this point the only TOC associated with the FB2 output is the inline TOC that can be optionally generated.</p>
<p>Support for two new readers has been added. <a href="http://www.ganaxa.com/news/20070922">Ganaxa&#8217;s GeR2</a> and <a href="http://en.wikipedia.org/wiki/Nokia_770_Internet_Tablet">Nokia&#8217;s 770</a> internet tablet. The N770 should have been support a long time ago and I apologize for how long this request has been unfulfilled. I put it at the bottom of my todo list and at some point it simply fell off and I forgot about it.</p>
<p>The GeR2 reader was a bit of a challenge to get supported. This reader and some models of the Cybook Gen 3 have the same vendor, product and revision (BCD) ids. On Windows and OS X this is not an issue because once the ids are matched further matches are done based on the plug and play (PNP) strings. However, on Linux only the ids are matched.</p>
<p>To solve this problem, matching on Linux needed some further checks. Kovid added support for libusb-1 which provides the vendor and product strings. He also added a call back that can be implemented in the device interface to implement platform and device specific checks. We did run into a few problems. The first was an easy to solve 32 vs 64 bit issue with the Python to C interface Kovid wrote for libusb-1. Once that was sorted out we ran into a larger problem. libusb-1 on Ubuntu by default is denied access to the vendor and product strings.</p>
<p>libusb-1, after appearing in only run release (0.6.27), has been dropped. Kovid has now written a custom device scanner for Linux that will parser the devices in /sys/bus/usb to determine if a reader is connected. libusb-1 is supposed to be an easy to use library capable of providing this functionality but unfortunately this turned out not to be the case. The custom scanner works and allowed me to implement differentiation between the GeR2 and the Cybook Gen 3 so both readers can be properly supported without conflict and with the correct device interface being used.</p>
]]></content:encoded>
			<wfw:commentRss>http://john.nachtimwald.com/2009/12/13/calibre-week-in-review-19/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calibre Week in Review</title>
		<link>http://john.nachtimwald.com/2009/06/06/calibre-week-in-review-8/</link>
		<comments>http://john.nachtimwald.com/2009/06/06/calibre-week-in-review-8/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 00:22:13 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[calibre]]></category>
		<category><![CDATA[device interfaces]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[GUI]]></category>

		<guid isPermaLink="false">http://john.nachtimwald.com/?p=130</guid>
		<description><![CDATA[This week hasn&#8217;t seen very much in the way of new features from me. I&#8217;ve only added one. This is mainly because I&#8217;ve been doing small bug fixes leading up to the beta for 0.6. The new feature, which Kovid helped me to implement, is ejecting the reader from within the GUI. When you mouse [...]]]></description>
			<content:encoded><![CDATA[<p>This week hasn&#8217;t seen very much in the way of new features from me. I&#8217;ve only added one. This is mainly because I&#8217;ve been doing small bug fixes leading up to the beta for 0.6.</p>
<p>The new feature, which Kovid helped me to implement, is ejecting the reader from within the GUI. When you mouse over the reader icon in the location list it will show an eject button next to the icon. Clicking the eject button will do just that, safely remove the device from the system and remove it from the location listing. I did the GUI work, created the interface for the device driver and added the Linux ejection code. Kovid added the OS X code and we both came up with a Window solution but his was more robust to it was used.</p>
]]></content:encoded>
			<wfw:commentRss>http://john.nachtimwald.com/2009/06/06/calibre-week-in-review-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calibre Week in Review</title>
		<link>http://john.nachtimwald.com/2009/05/02/calibre-week-in-review-3/</link>
		<comments>http://john.nachtimwald.com/2009/05/02/calibre-week-in-review-3/#comments</comments>
		<pubDate>Sat, 02 May 2009 16:35:15 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[calibre]]></category>
		<category><![CDATA[device interfaces]]></category>
		<category><![CDATA[eReader]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[pml]]></category>
		<category><![CDATA[pmlz]]></category>

		<guid isPermaLink="false">http://john.nachtimwald.com/?p=110</guid>
		<description><![CDATA[It seems that PDF is becoming the never ending format for me. Maybe I should start naming the posts PDF Work instead of Calibre Week in Review&#8230; One minor and one major change to PDF processing this week. The minor change was a fix for bug 2342. German umlauts are now displayed correctly in the [...]]]></description>
			<content:encoded><![CDATA[<p>It seems that PDF is becoming the never ending format for me. Maybe I should start naming the posts PDF Work instead of Calibre Week in Review&#8230;</p>
<p>One minor and one major change to PDF processing this week. The minor change was a fix for bug 2342. German umlauts are now displayed correctly in the output. The major change is PDF output now supports comics. cbz, cbr, cbc are some of the input formats for comics that are support and now you can turn them into a PDF. The huge advantage is for people (like me) who have a Cybook. A comic can be turned into one PDF file sized for the device keeping down the amount of clutter in the library view.</p>
<p>I also worked on the device framework and have pluginized all of the device interfaces (I like the term interfaces better than drivers because it reduces confusion as Windows device drivers are very different). They also sport a new configuration system (though they didn&#8217;t have configuration before at all). The user will be able to specify their preferred format order for sending to the device. As well as disable certain formats from being sent to the device at all. I said will because while the configuration code is done there is currently no way to call it in the preferences dialog. However, this will be rectified before 0.6 is released.</p>
<p>eReader output has been put on hold for the foreseeable future. eReader input is complete and working but due to the undocumented nature of the eReader format I have not been able to produce a working output plugin. The main issue I&#8217;ve run into is the eReader header (record 0 within the pdb container) is a 132 byte package with 66 sections. There are to many unknown sections. Even with the inspector script I wrote to see what the values are in working eReader files I have not been able to understand how all of the sections interact with the file itself. My guesses have all resulted in files that are not readable by the eReader Pro software.</p>
<p>eReader files uses the PML markup language and while I couldn&#8217;t get eReader output working I have added support for PML input and PML output. The PML output can be taken and put into either MakeBook or DropBook to produce a working eReader file.</p>
<p>Two things to note about the the PML support is input can take either a straight .pml file or it can take a zip archive filled with .pml files and PNG images (the images must be in PNG format). The zip archive must have the extension changed to .pmlz for this to work. PML output will produce a zip archive with the extension .pmlz. Within this archive will be all of the image files in PNG format and the produced .pml files.</p>
<p>.pmlz is simply an easy way to group the files and ensure that there is not issues with including missing files or not being able to find referenced files.</p>
]]></content:encoded>
			<wfw:commentRss>http://john.nachtimwald.com/2009/05/02/calibre-week-in-review-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
