Planet maemo: category "feed:1525c52c13056272dbc37acd33e2b2eb"

philipl

GVFS MTP Updates: Direct I/O and filenames in URIs!

2013-03-28 04:24 UTC  by  philipl
0
0

Hi Everyone,

It’s been a while since my last update (over a month!) so it’s a good time to talk about what’s been going on.

Firstly, GVFS 1.16 is out – so that’s the first stable release with the MTP backend in it. w00t!

Before you wonder, it doesn’t include my work to support the Android Direct I/O extensions (that allow normal read/write access to files on the device). I’ve now got those to a point where I’m ready to get them in, but I’m waiting on a review in bugzilla. Since my last update, all the libmtp changes have been merged and released in version 1.1.16.

The second big thing I’ve done is completely change how mtp URIs work. In previous posts, I’ve talked about how I was putting entity IDs as path elements to save having to maintain an ID->filename mapping, and then relying on the gvfs display and copy name properties to make the files appear to have normal names when looked at. I ultimately decided to abandon this approach for a couple of reasons. The main one is that with Direct I/O support, every application that can operate on files can be used with an MTP device, and most of those apps don’t know anything about gvfs and can’t use the special properties. The second reason is that there are edge cases where it’s impossible to tell if you’re looking at a filename that’s all numbers or an entity ID. So, I’ve added a mapping system and URIs now use filenames.

Finally, I’ve fixed a bug in gvfs that only got triggered when unmounting an mtp device in Ubuntu 13.04 betas. The code in question hasn’t changed in gvfs for a long time, but the bug didn’t appear anywhere else. Still, there is a real code problem in there, so I’ve got a fix out for it.

I’ve updated my with builds that contain all these pending patches (although the raring gvfs got updated while mine was building so it’s now considered out-of-date) and the new libmtp, so please try the new stuff out.

For the curious, here are the GNOME bugzilla entries tracking these changes:

Enjoy!

Categories: The wonderful world of GNOME...
philipl

A couple of weeks ago, Han-Wen Nienhuys, the author of go-mtpfs, pointed out to me that Android’s MTP implementation includes a set of methods that allow you to do normal read and write operations on files without having to do the whole download/upload dance. With these extensions, you can expose files in the way that most people expect – you can just open a text file, picture, video etc, make changes and save it back. As a bonus, this functionality also allows you to do very useful operations like copy or move a file on the device.

I’ve now had a chance to put together an initial implementation of support for these extensions, and my PPA is in the process of rebuilding packages, so people can try them out easily. I’ve not started the upstreaming process on the GVFS changes as I still need to get the libmtp changes approved and upstreamed, but the libmtp maintainer has been AWOL for a few weeks now.

Obviously, it’s important to remember that these extensions are Android specific and won’t help you if you have a non-Android device, nor if your Android device doesn’t use Google’s MTP implementation (which, unfortunately, includes most Samsung devices).

You can grab Ubuntu packages from my ppa and the source is available on my github page.

Categories: The wonderful world of GNOME...
philipl

gvfs MTP backend is merged!

2013-01-12 23:21 UTC  by  philipl
0
0

At last! I’m happy to report that I merged the MTP backend to gvfs master yesterday. It’ll show up in the upcoming 1.15.2 release, and for Ubuntu users, I’ve updated my PPA to include builds for Precise, Quantal and Raring.

Enjoy!

Categories: The wonderful world of GNOME...
philipl

More gvfs MTP backend news

2013-01-05 05:01 UTC  by  philipl
0
0

Hi everyone,

Happy New Year! And the new year brings new updates on the gvfs MTP front. I received a bunch of useful feedback from the gvfs maintainers last month, which I was finally able to get time to sit down and address over the last few days. Accordingly, I’ve made a series of updates that fix a variety of things, from small memory leaks all the way to, finally, implementing the right way to tell Nautilus to do directory downloads/uploads in the right way (You’ve got to return a specific error code) – which fixes the one remaining functional gap in the code. Uploading a directory is still not fully working as I need to handle the way Nautilus ends up referring to uploaded directories by name when trying to upload their contents. Right now there’s no logic to remap the name to the MTP entity ID so the file uploads fail, but I know what has to be done.

I think we’re nearing the finish line, with respect to getting this merged upstream. *phew*

As always, the easiest way to try the code out is to install the packages from my PPA. I have also put a build of libmtp 1.1.5 in there so that unlock events and thumbnails work out of the box too.

Enjoy!

Categories: The wonderful world of GNOME...
philipl

gvfs MTP backend update

2012-12-03 04:03 UTC  by  philipl
0
0

Hi again,

It’s been quite a while since I wrote my gvfs MTP backend work, but that doesn’t mean nothing has happened in the meantime. Since then, I’ve improved the functionality quite a bit, including submitting patches to libmtp to support grabbing thumbnails and detecting “Add Storage” events (which you want to do so that when someone unlocks their phone, the phone storage automatically appears). I’ve also started the review process for submitting upstream (See GNOME Bug 666195), so hopefully we’ll see it upstream in the next couple of months.

More practically, and the main reason for writing this post, I’ve finally got around to setting up a ppa to host builds of gvfs with my patches applied. Learning how to set up a ppa was interesting, and pretty painless – so the end result is working packages for Ubuntu 12.10. Note that due to 12.10 only including libmtp 1.1.4, neither of the features I mentioned above is enabled in these builds (so you’ll have to refresh your nautilus window after unlocking). Perhaps I’ll throw a build of 1.1.5 in there too at some point.

You can find the ppa here. Enjoy!

Categories: The wonderful world of GNOME...
philipl

Native gvfs backend for MTP devices

2012-08-08 04:40 UTC  by  philipl
0
0

Hi again! It’s been a while since I’ve had something to write about, and it’s filesystems again, but with less April Fool’s.

Click to read 2664 more words
Categories: The wonderful world of GNOME...
philipl

πfs: The Filesystem of the Future!

2012-04-01 03:12 UTC  by  philipl
0
0

I’m very pleased to announce that after eight years of research and development, I can present the world’s most revolutionary filesystem: πfs!

Click to read 1156 more words
Categories: Incoherent Rambling
philipl

CrystalHD improvements

2011-05-01 17:02 UTC  by  philipl
0
0

Hi all,

Click to read 1716 more words
Categories: CrystalHD
philipl

CrystalHD support now merged in FFmpeg and MPlayer

2011-03-25 05:08 UTC  by  philipl
0
0

I’m pleased to finally be able to announce that my CrystalHD support patches have been accepted into FFmpeg and MPlayer – if you grab the latest source from each of the projects, you’ll be good to go. As before, you’ll need the latest driver and userspace library from Jarod Wilson’s git tree. The driver that’s included in the Linux kernel’s staging directory, and the library on Broadcom’s website are both too old.

Click to read 1144 more words
Categories: CrystalHD
philipl

At the end of last year, Broadcom released open-source drivers and a library for their CrystalHD hardware video decoder; You can read the details about that at Jarod Wilson’s blog if you’re interested.

Click to read 2380 more words
Categories: CrystalHD
philipl

Hacking the Promise NS4600

2010-02-21 18:46 UTC  by  philipl
0
0

A couple of weeks ago, I bought myself a Promise NS4600 to replace my old Promise NS4300n NAS. These Promise devices are not particularly special but are cost effective and the new one performs well. As you might expect, both the old and news ones run Linux, but Promise do not allow direct access. Some people found ways in to the NS4300n and even worked out how the plugin format worked so you can extend its functionality fairly cleanly. Initial work had been done on the NS4600 but no one had documented the new plugin format or produced any plugins. So, I took it upon myself to do exactly that – I put together a guide and have linked to my initial plugins from there.

The NS4600 is pretty neat because it’s actually x86 compatible – it uses an Intel EP80579 SoC with a Pentium M core; it’s not a common sight (we’re drowning in high-end Atom based NASs) so the novelty is neat and being able to compile and run code easily is a plus.

The guide is here.

Enjoy!

Categories: NS4600
philipl

The Bluetooth DUN package has been well received, but was hardly a profound programming endeavour. So, I’ve been trying to find suitable inspiration for a more substantial project. This morning, someone made a comment on the Bluetooth DUN page that there’s no way to tell if the phone has a tethered data connection or not – and he’s right: there’s no visual feedback on the phone, unlike Nokia’s Symbian devices or, I imagine, many other phones in the world. With that as a motivation, I decided to try and write a status indicator for tethering.

Click to read 1172 more words
Categories: Maemo