Author Message

<  Everything Coding  ~  Compiling from source on Raspberry Pi 2 on latest raspbian

PostPosted: Sun Jul 05, 2015 2:55 pm Reply with quote
Posts: 21Joined: Sun Jul 05, 2015 1:54 pm
Hi I am having some problems with usb-modeswitch working intermittently. That is sometimes on reboot the modem is recognised and sometimes it isn't (I am trying a variety of modems but for the main one in particular it is identified as:

Code:
Bus 001 Device 007: ID 12d1:1446 Huawei Technologies Co., Ltd. E1552/E1800/E173 (HSPA modem)


(This is through lsusb with usb-modeswitch not installed, and externally on the physical package it is identified as a huawei E1750)

Thus I was trying to compile from sources on the pi... Here is what I got to so far before erroring out with a reference to libusb. Any suggestions? Thanks in advance!

Basic steps where to download the sources of both usb-modeswitch-2.2.3 and libusb-1.0.9 and compile them. Trying to compile usb-modeswitch-2.2.3 resulted in the error:

Code:
[pi@pi008:~/moswitch/usb-modeswitch-2.2.3] $ sudo make
cc -o usb_modeswitch usb_modeswitch.c -Wall `pkg-config --libs --cflags libusb-1.0`
usb_modeswitch.c: In function ‘main’:
usb_modeswitch.c:499:3: warning: implicit declaration of function ‘libusb_strerror’ [-Wimplicit-function-declaration]
usb_modeswitch.c:499:3: warning: format ‘%s’ expects argument of type ‘char *’, but argument 5 has type ‘int’ [-Wformat]
/tmp/ccCIzAYJ.o: In function `main':
usb_modeswitch.c:(.text+0x23a8): undefined reference to `libusb_strerror'
collect2: ld returned 1 exit status
Makefile:39: recipe for target 'usb_modeswitch' failed
make: *** [usb_modeswitch] Error 1


Here are the full steps I used to install the latest libusb 1.0.9

Code:
[pi@pi008:~] $ mkdir moswitch
[pi@pi008:~] $ cd moswitch/
[pi@pi008:~/moswitch] $ wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-2.2.3.tar.bz2
...snipped output...

[pi@pi008:~/moswitch] $ tar xvjf usb-modeswitch-2.2.3.tar.bz2
...snipped output...

[pi@pi008:~/moswitch] $ wget http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.9/libusb-1.0.9.tar.bz2
...snipped output...

[pi@pi008:~/moswitch] $ tar xvjf libusb-1.0.9.tar.bz2
...snipped output...

[pi@pi008:~/moswitch] $ cd libusb-1.0.9/
[pi@pi008:~/moswitch/libusb-1.0.9] $ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking build system type... armv7l-unknown-linux-gnueabi
checking host system type... armv7l-unknown-linux-gnueabi
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for windres... no
checking for inline... inline
checking whether gcc and cc understand -c and -o together... yes
checking operating system... Linux
checking for clock_gettime in -lrt... yes
checking poll.h usability... yes
checking poll.h presence... yes
checking for poll.h... yes
checking sys/timerfd.h usability... yes
checking sys/timerfd.h presence... yes
checking for sys/timerfd.h... yes
checking whether TFD_NONBLOCK is declared... yes
checking whether to use timerfd for timing... yes
checking for struct timespec... yes
checking for sigaction... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for gettimeofday... yes
configure: creating ./config.status
config.status: creating libusb-1.0.pc
config.status: creating Makefile
config.status: creating libusb/Makefile
config.status: creating examples/Makefile
config.status: creating doc/Makefile
config.status: creating doc/doxygen.cfg
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands

[pi@pi008:~/moswitch/libusb-1.0.9] $ make
make  all-recursive
make[1]: Entering directory '/home/pi/moswitch/libusb-1.0.9'
Making all in libusb
make[2]: Entering directory '/home/pi/moswitch/libusb-1.0.9/libusb'
  CC     libusb_1_0_la-core.lo
  CC     libusb_1_0_la-descriptor.lo
  CC     libusb_1_0_la-io.lo
  CC     libusb_1_0_la-sync.lo
  CC     libusb_1_0_la-linux_usbfs.lo
  CC     libusb_1_0_la-threads_posix.lo
  CCLD   libusb-1.0.la
make[2]: Leaving directory '/home/pi/moswitch/libusb-1.0.9/libusb'
Making all in doc
make[2]: Entering directory '/home/pi/moswitch/libusb-1.0.9/doc'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/pi/moswitch/libusb-1.0.9/doc'
make[2]: Entering directory '/home/pi/moswitch/libusb-1.0.9'
make[2]: Leaving directory '/home/pi/moswitch/libusb-1.0.9'
make[1]: Leaving directory '/home/pi/moswitch/libusb-1.0.9'


[pi@pi008:~/moswitch/libusb-1.0.9] $ sudo make install
sudo make install
Making install in libusb
make[1]: Entering directory '/home/pi/moswitch/libusb-1.0.9/libusb'
make[2]: Entering directory '/home/pi/moswitch/libusb-1.0.9/libusb'
test -z "/usr/local/lib" || /bin/mkdir -p "/usr/local/lib"
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libusb-1.0.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libusb-1.0.so.0.1.0 /usr/local/lib/libusb-1.0.so.0.1.0
libtool: install: (cd /usr/local/lib && { ln -s -f libusb-1.0.so.0.1.0 libusb-1.0.so.0 || { rm -f libusb-1.0.so.0 && ln -s libusb-1.0.so.0.1.0 libusb-1.0.so.0; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libusb-1.0.so.0.1.0 libusb-1.0.so || { rm -f libusb-1.0.so && ln -s libusb-1.0.so.0.1.0 libusb-1.0.so; }; })
libtool: install: /usr/bin/install -c .libs/libusb-1.0.lai /usr/local/lib/libusb-1.0.la
libtool: install: /usr/bin/install -c .libs/libusb-1.0.a /usr/local/lib/libusb-1.0.a
libtool: install: chmod 644 /usr/local/lib/libusb-1.0.a
libtool: install: ranlib /usr/local/lib/libusb-1.0.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
test -z "/usr/local/include/libusb-1.0" || /bin/mkdir -p "/usr/local/include/libusb-1.0"
 /usr/bin/install -c -m 644 libusb.h '/usr/local/include/libusb-1.0'
make[2]: Leaving directory '/home/pi/moswitch/libusb-1.0.9/libusb'
make[1]: Leaving directory '/home/pi/moswitch/libusb-1.0.9/libusb'
Making install in doc
make[1]: Entering directory '/home/pi/moswitch/libusb-1.0.9/doc'
make[2]: Entering directory '/home/pi/moswitch/libusb-1.0.9/doc'
make[2]: Nothing to be done for 'install-exec-am'.
make[2]: Nothing to be done for 'install-data-am'.
make[2]: Leaving directory '/home/pi/moswitch/libusb-1.0.9/doc'
make[1]: Leaving directory '/home/pi/moswitch/libusb-1.0.9/doc'
make[1]: Entering directory '/home/pi/moswitch/libusb-1.0.9'
make[2]: Entering directory '/home/pi/moswitch/libusb-1.0.9'
make[2]: Nothing to be done for 'install-exec-am'.
test -z "/usr/local/lib/pkgconfig" || /bin/mkdir -p "/usr/local/lib/pkgconfig"
 /usr/bin/install -c -m 644 libusb-1.0.pc '/usr/local/lib/pkgconfig'
make[2]: Leaving directory '/home/pi/moswitch/libusb-1.0.9'
make[1]: Leaving directory '/home/pi/moswitch/libusb-1.0.9'

[pi@pi008:~/moswitch] $ cd usb-modeswitch-2.2.3/

[pi@pi008:~/moswitch/usb-modeswitch-2.2.3] $ make
cc -o usb_modeswitch usb_modeswitch.c -Wall `pkg-config --libs --cflags libusb-1.0`
usb_modeswitch.c: In function ‘main’:
usb_modeswitch.c:499:3: warning: implicit declaration of function ‘libusb_strerror’ [-Wimplicit-function-declaration]
usb_modeswitch.c:499:3: warning: format ‘%s’ expects argument of type ‘char *’, but argument 5 has type ‘int’ [-Wformat]
/tmp/ccXq1qgo.o: In function `main':
usb_modeswitch.c:(.text+0x23a8): undefined reference to `libusb_strerror'
collect2: ld returned 1 exit status
Makefile:39: recipe for target 'usb_modeswitch' failed
make: *** [usb_modeswitch] Error 1



Offline Profile
PostPosted: Sun Jul 05, 2015 6:55 pm Reply with quote
Posts: 1156Location: Koh Samui, THJoined: Wed Jul 11, 2012 3:14 pm
Did you try to google "libusb_strerror bug" ?
If not, why not?


Offline Profile
PostPosted: Sun Jul 05, 2015 8:32 pm Reply with quote
Posts: 21Joined: Sun Jul 05, 2015 1:54 pm
LOM wrote:
Did you try to google "libusb_strerror bug" ?
If not, why not?


Well I tried googling a number of things. Mostly terms like

Quote:
usb_modeswitch.c:(.text+0x23a8): undefined reference to `libusb_strerror

Quote:
usb_modeswitch.c: undefined reference to `libusb_strerror


etc. but given that thread you point to... It might look like I should be installing a different libusb then the one specifically given in the instructions. Ie I would now be deviating a fair bit from the installation instructions thus it is important to ask what is what... Either the build instructions are out of date (and we should be using other libusb libraries and not the one specifically pointed to in the instructions), or I messed up somehow so I thought it prudent to raise the question...

Note as far as the closest raspberian libraries available I did

Code:
[pi@pi008:~] $ aptitude -F "%p" search "?not(?installed)" | grep "^libusb"
libusb++-0.1-4c2                                                               
libusb++-dev                                                                   
libusb-1.0-0-dev                                                               
libusb-dev                                                                     
libusb-ocaml                                                                   
libusb-ocaml-dev                                                               
libusb-ocaml-dev-fq0r4                                                         
libusb-ocaml-fq0r4                                                             
libusb-ruby                                                                     
libusb-ruby1.8                                                                 
libusb-ruby1.9.1                                                               
libusbhid-common                                                               
libusbip-dev                                                                   
libusbmuxd-dev                                                                 
libusbmuxd1-dbg                                                                 
libusbprog-dev                                                                 
libusbprog0                                                                     
libusbredirhost-dev                                                             
libusbredirhost1                                                               
libusbredirparser-dev                                                           
libusbredirparser0                                                             
libusbtc08-1                                                                   
libusbtc08-dev         


However trying libusb-1.0-0-dev didn't solve the problem either. Hence I thought it better just to ask... So any help? Should I be using a different libusb then the one explicitly given in the instructions on the main site?

Thanks for any help,
Jason


Offline Profile
PostPosted: Sun Jul 05, 2015 9:47 pm Reply with quote
Site AdminPosts: 6360Joined: Sat Nov 03, 2007 12:30 am
The suggestion for that error catch came from a thread in this forum:
viewtopic.php?f=2&t=2257

I remember testing the compilation of version 2.2.3 on my Pi 2 and hitting the very same error. I even changed the code and removed the function. It looks like I did this on the Pi but not on my official development machine - blame it to some distraction or the other ...

Here is the simple change in line 499 ...

Old:
Code:
fprintf(stderr, "Error: Failed to initialize libusb. %s (%d): %s\n\n", libusb_error_name(libusbError), libusbError, libusb_strerror(libusbError));

New:
Code:
fprintf(stderr, "Error: Failed to initialize libusb. %s (%d)\n\n", libusb_error_name(libusbError), libusbError);


Online Profile
PostPosted: Sun Jul 05, 2015 10:18 pm Reply with quote
Posts: 21Joined: Sun Jul 05, 2015 1:54 pm
Josh wrote:
The suggestion for that error catch came from a thread in this forum:
viewtopic.php?f=2&t=2257

I remember testing the compilation of version 2.2.3 on my Pi 2 and hitting the very same error. I even changed the code and removed the function. It looks like I did this on the Pi but not on my official development machine - blame it to some distraction or the other ...

Here is the simple change in line 499 ...

Old:
Code:
fprintf(stderr, "Error: Failed to initialize libusb. %s (%d): %s\n\n", libusb_error_name(libusbError), libusbError, libusb_strerror(libusbError));

New:
Code:
fprintf(stderr, "Error: Failed to initialize libusb. %s (%d)\n\n", libusb_error_name(libusbError), libusbError);


Brilliant! Thanks for the reply. Ok. I thought I had done something a bit wrong but the simple source code change was meant to fix it. To get things to compile I also had to decompress the usb_modeswitch.tcl.bz2 into usb_modeswitch.tcl

Code:
[pi@pi008:~/moswitch/usb-modeswitch-2.2.3] $ bzip2 -dk usb_modeswitch.tcl.bz2


Since this is already compressed in the normal sources I was wondering why there is this extra step in the compile process... (No doubt there is a good reason but I guess I am missing it...)

Again thanks for the help! (And of course thanks for the package!!!)

Cheers,
Jason


Offline Profile
PostPosted: Sun Jul 05, 2015 11:30 pm Reply with quote
Site AdminPosts: 6360Joined: Sat Nov 03, 2007 12:30 am
JasonH wrote:
Since this is already compressed in the normal sources I was wondering why there is this extra step in the compile process... (No doubt there is a good reason but I guess I am missing it...)

No good reason at all - just a nervous trigger finger in "MC" (the filemanager) as it seems.

Thanks for the hint, will be corrected !


Online Profile
PostPosted: Mon Jul 06, 2015 12:29 am Reply with quote
Posts: 21Joined: Sun Jul 05, 2015 1:54 pm
Josh wrote:
JasonH wrote:
Since this is already compressed in the normal sources I was wondering why there is this extra step in the compile process... (No doubt there is a good reason but I guess I am missing it...)

No good reason at all - just a nervous trigger finger in "MC" (the filemanager) as it seems.

Thanks for the hint, will be corrected !


Ahh... Cool! Glad, I wasn't missing something deep and mysterious! Thanks again for the great responses!!

Cheers,
Jas


Offline Profile
PostPosted: Mon Jul 06, 2015 6:36 am Reply with quote
Posts: 1156Location: Koh Samui, THJoined: Wed Jul 11, 2012 3:14 pm
JasonH wrote:
It might look like I should be installing a different libusb then the one specifically given in the instructions. Ie I would now be deviating a fair bit from the installation instructions thus it is important to ask what is what... Either the build instructions are out of date (and we should be using other libusb libraries and not the one specifically pointed to in the instructions), or I messed up somehow so I thought it prudent to raise the question...



I don't know why the build instructions says 1.0.9, 1.0.19 has been out for a year and there were ten releases in between so 1.0.9 is now ancient.
The libusb changelog gives many reason for why we should update:

https://github.com/libusb/libusb/blob/master/ChangeLog

Josh?


Offline Profile
PostPosted: Sun Jul 12, 2015 5:14 pm Reply with quote
Site AdminPosts: 6360Joined: Sat Nov 03, 2007 12:30 am
JasonH wrote:
It might look like I should be installing a different libusb then the one specifically given in the instructions. Ie I would now be deviating a fair bit from the installation instructions thus it is important to ask what is what...

I'm not sure which building instructions you are referring to. I just checked and to my knowledge usb_modeswitch does not recommend any specific version except 1.x ...

:?:


Online Profile
PostPosted: Mon Jul 13, 2015 6:40 pm Reply with quote
Posts: 21Joined: Sun Jul 05, 2015 1:54 pm
In the main instructions on the front page it says:

Quote:
Don't forget libusb-1.x(http://www.libusb.org/) if it's not on your system. In most distributions there is most likely a package named "libusb1-dev" or "libusb1-devel" (or similar).
Older versions were based on libusb-0.1.12 but since version 2.0.0 only libusb1.x is supported.

But the version on http://www.libusb.org/ maxes out at 1.0.9. There are other versions floating around but directions to the canonical version is probably a good idea. I can try compiling up other versions but even the version I have compiled using these sources is not working at all and I don't know how to debug this.

I would make a plea for having a canonical repository, and a canonical list of dependencies for which version of nodeswitch is tested and / or needs to track with which version of libusb etc. Then maybe even in the comments / forums a section for reporting success with which versions of hardware / modem / software people have had success with. (I have seen such compatibility lists in e.g. the mackintosh community and in other places e.g. http://wiki.osx86project.org/wiki/index.php/HCL_10.9.5)

Unfortunately, I have yet to get a single modem working from my recent source compiles which indicates to me that some component or other is missing / changed / or I stuffed something up from the way you build things. For reference I can get a number of modems working with 1.2.3+repack (the default version) on the raspberry pi 2. (But that version has problems, e.g. even if I have an empty hub connected to the pi then I can't get a connection (I think from reading the forums this was solved in modeswitch 1.2.6? I guess I could start using the way back machine e.g. http://web.archive.org/web/20130823204150/http://www.draisberghof.de/usb_modeswitch/ to try and find a 1.2.7 and compile that up and try to get it going but better I think to ask you and others how to get a stable working latest build...))

I am eager to do anything I can to get a stable working new version but so far have had no luck...

And most of all thanks again for all your help on this. It is pretty tricky finding stable / compatible versions. I have tried many many different reboots / combinations of things...

Thanks!
Jason


Offline Profile
PostPosted: Mon Jul 13, 2015 6:57 pm Reply with quote
Site AdminPosts: 6360Joined: Sat Nov 03, 2007 12:30 am
According to Wikipedia, the official website is currently here:

http://libusb.info/

I'll update the link in the usb_modeswitch page.


Online Profile
PostPosted: Mon Jul 13, 2015 7:07 pm Reply with quote
Site AdminPosts: 6360Joined: Sat Nov 03, 2007 12:30 am
JasonH wrote:
It is pretty tricky finding stable / compatible versions.

Hmm - I never ever had any problems in that regard, not even on Android (ARM & x86) tablets; however the USB part of the Raspi (earlier versions) is notorious for being less than stable overall.


Online Profile
PostPosted: Mon Jul 13, 2015 8:46 pm Reply with quote
Posts: 21Joined: Sun Jul 05, 2015 1:54 pm
So which version of the library should we be using then? libusb-1.0-0-dev on the pi or which tag in the git version you just linked to? (There are 29 different tags in the the linked git repo between v1.0.9 and v1.0.19-rc2) I guess you are saying there are all the same re mode-switch and anyone is as good as any other one?

Also I guess having a repo for the modeswitch source code and and canonical linked repos is not on the cards then? E.g. if there was I could have put in a pull request for that latest fix referenced in this very thread. (Maybe you put it in but didn't bump the rev number? not sure...)

It is probably just something I am doing wrong in my compile steps or something that differs from your pi. I did include the ansible script I used to build this with the exact sources I am using on a clean build... I guess I can try libusb-1.0-0-dev now that I can get it to compile and see if that makes a difference? I just thought you would have a definitive version to compile against...

Re the notorious USB support on the Pi is there anything I can do about this? Any links to other libraries I can use etc?

Again thanks for all your help!

Cheers,
Jason


Offline Profile
PostPosted: Mon Jul 13, 2015 10:10 pm Reply with quote
Site AdminPosts: 6360Joined: Sat Nov 03, 2007 12:30 am
JasonH wrote:
I guess you are saying there are all the same re mode-switch and anyone is as good as any other one?

I don't know. What I'm saying is that I never cared about the version I was working with because there were no problems - up to that 'advanced' error report issue that bit you (and me).

I'm thinking about removing the error translation feature entirely in the next release (to be as compatible as possible) but I'm not sure this issue is pressing enough to justify an immediate bugfix release.


Online Profile
PostPosted: Mon Jul 13, 2015 10:19 pm Reply with quote
Posts: 21Joined: Sun Jul 05, 2015 1:54 pm
Quote:
I don't know. What I'm saying is that I never cared about the version I was working with because there were no problems - up to that 'advanced' error report issue that bit you (and me).


Ahhh... I guess I have just been kind of unlucky then. I can try a clean card wipe, reinstall raspberrian & re-provision of the Pi2's and then a fresh compile with libusb-1.0-0-dev and then testing all the different combos, and then try the whole process again with libsub-1.0.19-rc4 but each time I kill like an hour and a half at the minimum, and I haven't had so much success previously. I had hoped to short circuit the process of just burning time on this... So can I ask the favour of getting you to tell me exactly which version of the libusb library you are compiling against at present and that works for you so at least I can try that version?

Again thanks for all your help!
Jason


Offline Profile

Display posts from previous:  Sort by:

All times are UTC + 1 hour [ DST ]
Page 1 of 3
34 posts
Go to page 1, 2, 3  Next
Users browsing this forum: No registered users and 1 guest
Search for:
Post new topic  Reply to topic
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum