I put out a tarball release of gnome-vfs-obexftp here:
This includes a number of fixes since the work I did in October:
- Fix up some error handling in the dbus code.
- Mark files under the obex:/// virtual root as being local. This causes Nautilus to process the desktop entries and give us nice icons.
- Ship a copy of osso-gwobex, built statically into the VFS module. This removes the need to install another shared library only used by one application.
As well as the standard Gnome and D-BUS libraries, you will need OpenOBEX >= 1.2 and Bluez-Utils >= 3.7. The hcid daemon must be started with the -x flag to enable the experimental D-BUS interfaces used by the VFS module. You will also need a phone or other device that supports OBEX FTP ๐
Last but not least, a screenshot:
Update
There was a build issue in the previous release caused by the osso-gwobex headers not being found. I hadn’t noticed it because I had installed the library standalone. An updated tarball is available here:
Jeah, Great, fantastic, go for gnome 2.18….
Thank you very much.
Error building
Using FC6
openobex-devel-1.3-3.1
openobex-apps-1.3-3.1
openobex-1.3-3.1
bluez-utils-cups-3.7-2
bluez-libs-3.7-1
bluez-hcidump-1.32-1
bluez-utils-3.7-2
bluez-gnome-0.6-1.fc6
bluez-libs-devel-3.7-1
gnome-vfs-obexftp-0.1 is not detecting the builtin osso-gwobex package. am i doing something wrong ?
build log follows.
—————
$ make
make all-recursive
make[1]: Entering directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1′
Making all in osso-gwobex
make[2]: Entering directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1/osso-gwobex’
make all-recursive
make[3]: Entering directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1/osso-gwobex’
Making all in src
make[4]: Entering directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1/osso-gwobex/src’
make[4]: Nothing to be done for `all’.
make[4]: Leaving directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1/osso-gwobex/src’
Making all in test
make[4]: Entering directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1/osso-gwobex/test’
make[4]: Nothing to be done for `all’.
make[4]: Leaving directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1/osso-gwobex/test’
make[4]: Entering directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1/osso-gwobex’
make[4]: Nothing to be done for `all-am’.
make[4]: Leaving directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1/osso-gwobex’
make[3]: Leaving directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1/osso-gwobex’
make[2]: Leaving directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1/osso-gwobex’
Making all in docs
make[2]: Entering directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1/docs’
make[2]: Nothing to be done for `all’.
make[2]: Leaving directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1/docs’
Making all in src
make[2]: Entering directory `/home/rkhadgar/share/gnome-vfs-obexftp-0.1/src’
if /bin/sh ../libtool –tag=CC –mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -D_FILE_OFFSET_BITS=64 -D_BSD_SOURCE -D_LARGEFILE64_SOURCE -D_POSIX_PTHREAD_SEMANTICS -pthread -DORBIT2=1 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gnome-vfs-2.0 -I/usr/lib/gnome-vfs-2.0/include -I/usr/include/gconf/2 -I/usr/include/orbit-2.0 -I/usr/include/gnome-vfs-module-2.0 -g -O2 -Wall -std=c89 -Wcast-align -Wsign-compare -Wnested-externs -Wpointer-arith -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wno-strict-aliasing -Wno-sign-compare -Wdeclaration-after-statement -MT obex-method.lo -MD -MP -MF “.deps/obex-method.Tpo” -c -o obex-method.lo obex-method.c; \
then mv -f “.deps/obex-method.Tpo” “.deps/obex-method.Plo”; else rm -f “.deps/obex-method.Tpo”; exit 1; fi
gcc -DHAVE_CONFIG_H -I. -I. -I.. -D_FILE_OFFSET_BITS=64 -D_BSD_SOURCE -D_LARGEFILE64_SOURCE -D_POSIX_PTHREAD_SEMANTICS -pthread -DORBIT2=1 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/gnome-vfs-2.0 -I/usr/lib/gnome-vfs-2.0/include -I/usr/include/gconf/2 -I/usr/include/orbit-2.0 -I/usr/include/gnome-vfs-module-2.0 -g -O2 -Wall -std=c89 -Wcast-align -Wsign-compare -Wnested-externs -Wpointer-arith -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wno-strict-aliasing -Wno-sign-compare -Wdeclaration-after-statement -MT obex-method.lo -MD -MP -MF .deps/obex-method.Tpo -c obex-method.c -fPIC -DPIC -o .libs/obex-method.o
obex-method.c:30:21: error: gw-obex.h: No such file or directory
….
Got it working thanks to the -x parameter to hcid ๐
Build fails here, Fedora Core 6:
make all-recursive
make[1]: Entering directory `/home/build/rpmbuild/BUILD/gnome-vfs-obexftp-0.1′
Making all in osso-gwobex
make[2]: Entering directory `/home/build/rpmbuild/BUILD/gnome-vfs-obexftp-0.1/osso-gwobex’
make all-recursive
make[3]: Entering directory `/home/build/rpmbuild/BUILD/gnome-vfs-obexftp-0.1/osso-gwobex’
Making all in src
make[4]: Entering directory `/home/build/rpmbuild/BUILD/gnome-vfs-obexftp-0.1/osso-gwobex/src’
if /bin/sh ../libtool –tag=CC –mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -I. -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -Wall -Wunused -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-sign-compare -Werror -MT obex-priv.lo -MD -MP -MF “.deps/obex-priv.Tpo” -c -o obex-priv.lo obex-priv.c; \
then mv -f “.deps/obex-priv.Tpo” “.deps/obex-priv.Plo”; else rm -f “.deps/obex-priv.Tpo”; exit 1; fi
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I. -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -Wall -Wunused -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-sign-compare -Werror -MT obex-priv.lo -MD -MP -MF .deps/obex-priv.Tpo -c obex-priv.c -fPIC -DPIC -o .libs/obex-priv.o
cc1: warnings being treated as errors
obex-priv.c: In function ‘obex_readstream’:
obex-priv.c:384: warning: ignoring return value of ‘write’, declared with attribute warn_unused_result
make[4]: *** [obex-priv.lo] Error 1
make[4]: Leaving directory `/home/build/rpmbuild/BUILD/gnome-vfs-obexftp-0.1/osso-gwobex/src’
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/build/rpmbuild/BUILD/gnome-vfs-obexftp-0.1/osso-gwobex’
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/build/rpmbuild/BUILD/gnome-vfs-obexftp-0.1/osso-gwobex’
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/build/rpmbuild/BUILD/gnome-vfs-obexftp-0.1′
make: *** [all] Error 2
re Ritesh’s bug, this is the patch I’m using:
— src/Makefile.am 2007/01/04 01:52:34 1.1
+++ src/Makefile.am 2007/01/04 01:53:50
@@ -3,6 +3,7 @@ INCLUDES =
-D_BSD_SOURCE \
-D_LARGEFILE64_SOURCE \
-D_POSIX_PTHREAD_SEMANTICS \
+ -I$(top_builddir)/osso-gwobex/src \
$(OBEX_MODULE_CFLAGS) \
$(XML_CFLAGS)
additonally, for some reason the file below was never created ๐ . did the same manually.
/etc/gnome-vfs-2.0/modules/obex-modules.conf
Ritesh: the file probably got installed in $prefix/etc/gnome-vfs-2.0/modules, since the default value of sysconfdir is $prefix/etc.
If you pass –sysconfdir=/etc to configure, that should solve the problem (this is the same sysconfdir that was configured for gnome-vfs).
Duh ! thanks James.
There is something I must’ve done wrong.
Typing obex:/// in Nautilus does bring up an icon of my phone. However, when I click on it, it does the pairing (asking for pin and such, the telephone asks me TWICE if I want to accept the connection which I do accept both times), and in the end, nothing happens at all.
I typed the location of the phone (obex://[00:16:4E:D0:06:D5]/) directly into Nautilus, which said that it can’t display the location, and I should choose another viewer.
I have a Nokia N70.
Okay, problem partly understood. I managed to get a real access to my phone over obexftp – a Nokia N70 absolutely NEEDS to be accessed on bluetooth channel 12 (-B 12) for real FTP access.
However, I have no idea how to tell vfs-obexftp about this. Where do I insert the channel number?
Daniel: there is already some special case code for Nokia smartphones in the code, since they export a crippled FTP implementation for the standard service UUID.
Before trying to connect using the standard FTP service, it tries a Nokia specific service UUID, which should function correctly. I don’t have the hardware necessary to test this though (my 6230 doesn’t implement this second service).
Just did a quick testing on FC6 with the Nokia 6680 I have. It works nicely but there are some problems:
1) The obex:/// list was initially empty. I explicitly opened the phone location (MAC address), then the pairing procedure happened and after that the phone icon showed up in obex:/// list. Shouldn’t there be some sort of proximity scan?
2) If I switch bluetooth off on the phone, the phone icon does not disappear. Again, the list should reflect the current proximity.
3) Clicking on the phone icon is not very stable, sometimes it produces a dialog box with a generic ‘can’t open’ error. It might be the phone’s problem though.
4) phone’s MAC address should only be visible through properties. Human friendly names should be used everywhere else.
I’d be glad to do further testing. I’ll also have a look at adding USB support.
Some info from Marcel Holtmann, the OpenOBEX maintainer:
osso-gwobex should be replaced by OpenOBEX GLib bindings, but actually they are not ready yet. File transfer functionality can be included directly into the bindings but
someone has to write it.
Sounds stupid. But i have send obexftpd app on my motorola a1200, but strangely nothing seems to pop-up with obex:///
.
I’m having the almost the same trouble as Daniel with my Nokia N80, though mine is actually a bit worse. I can get files moved around using obexftp using channel 12 on Ubuntu 6.10 (Edgy Eft), but I keep getting:
Nautilus cannot display obex:///
Please select another viewer and try again.
This happens no matter whether I type the MAC directly or just start with obex:///
I have the right OpenOBEX and Bluez-utils packages, and I modified my bluetooth startup script to have hcid start with the -x flag. No joy, though. Any ideas?
Mike: are your obex-modules.conf and *.so libraries in the right places? By default they get installed in /usr/local and gnome won’t pick them up.
There is no support for USB connections? I’m using latest version (0.2).
Thanks,
Wendell.
Aha! That did it. I had copied the obex-module.conf file to the right directory before, but the .so file were still wrong. I re-built using ./configure –prefix=/usr –sysconfdir=/etc and that did it!
Now I have it working…sort of. It shows my phone (Nokia N80) and I can click into it and navigate around for a little while. But after about a minute or so, it stops being able to navigate around and gives me this error:
Couldn’t display folder “XYZ/ABC”
Sometimes it recovers, sometimes not. It’s still a little flaky, in general. Just the same, it’s a really great leap forward for Bluetooth on Linux, and it’s already looking like it will be a pretty helpful addition to Gnome.
Hi,i have Arch Linux and Nokia 5500 Sport, i compile gnome-vfs-obexftp witch ./configure –prefix=/opt/gnome –sysconfdir=/etc. And i have the same problem as Daniel, if i write to Nautilus “obex://” is window empty, so i write obex://[XX:XX:XX:XX:XX:X], my phone say connection and on console log on command “hcid -x -n” is “hcid[22677]: Connect in progress”. Nautilus say “Please select another viewer and try again.”I try my phone on another PC with Kubuntu 6.10 and everything is OK and works.Pleas help me. I like Gnome :).PS: sorry for bad english ๐