The Whole Nicotine FAQ

Search FAQ What's new? FAQ Index Whole FAQ Routlette Add entry

Last changed on Tue Jun 24 09:18:34 2008 CEST

(Entries marked with ** were changed within the last 24 hours; entries marked with * were changed within the last 7 days.)


1. General information and availability


2. Installation


3. Usage / Features


4. Common problems


1. General information and availability

1.1 What is nicotine?

\Nic"o*tine\ (? or ?), n. [F. nicotine. See {Nicotian}.] (Chem.)

An alkaloid which is the active principle of tobacco. It is a
colorless, transparent, oily liquid, having an acrid odor, and an
acrid burning taste. It is intensely poisonous. --Ure.
From Webster's Revised Unabridged Dictionary (1913)

Edit this entry / Log info / Last changed on Thu Aug 28 16:13:27 2003 by hyriand


1.2 Very funny, what is Nicotine really?

Nicotine is a SoulSeek client written in Python, based on the PySoulSeek project by Alexander Kanavin. It features, among other things, a completely rewritten graphical user interface which uses PyGTK-2 toolkit and a less strict user request policy.

Nicotine is a feature complete client for the SoulSeek filesharing network. You can use it to upload, download, search, browse, view user info and chat. You can keep a "buddy" list and basically everything else a SoulSeek client is supposed to do. If you are familliar with PySoulSeek, you'll probably notice a striking resemblance in appearance.

Edit this entry / Log info / Last changed on Thu Aug 28 16:17:04 2003 by hyriand


1.3 Where can I get it?

Nicotine can be downloaded from the nicotine homepage: http://nicotine.thegraveyard.org/. Development builds are not publicly released and there is no CVS or similar source repository at the moment.

Edit this entry / Log info / Last changed on Thu Aug 28 16:44:24 2003 by hyriand


1.4 Where did the name "nicotine" come from?

I was in a geeky mood and was browsing http://www.bash.org 's QDB. I stumbled across this quote:

 <etc> so tempting to release a product called 'nicotine' and wait
       for the patches.
 <etc> then i would have a reason to only apply one patch a day
       otherwise, i'm going against medical advise.
So I thought what the hell and bluntly stole etc's idea.

Edit this entry / Log info / Last changed on Thu Aug 28 16:52:34 2003 by hyriand


1.5 I made this awesome patch that does <something>, can I send it to you?

Sure, and chances are I'll even add it if the code is clean and I don't consider <something> to be absolutely useless. As a maintainer I can't just add any patch I get as there has to be some quality control.

Edit this entry / Log info / Last changed on Thu Aug 28 19:44:20 2003 by hyriand


1.6 Okay, I have this great idea for a feature that I'd like to see in nicotine, can I bug you with it?

If you're a coder, feel free to make a patch and send it to me. If not, feel free to suggest it to me, but please remember, I develop Nicotine in my free time, and I don't have the time to implement every feature imaginable. Also, be sure to give me a clear example of when this feature would be useful.

Edit this entry / Log info / Last changed on Thu Aug 28 19:54:44 2003 by hyriand


1.7 You bastard! You stole PySoulSeek and repackaged it under a different name!

Well, nicotine is much more than just a repackaged version of PySoulSeek, but hey, you don't have to like me.

Edit this entry / Log info / Last changed on Thu Aug 28 19:58:33 2003 by hyriand



2. Installation

2.1 How do I install nicotine in an ideal world? [Debian, Gentoo]

In an ideal world, your distribution provided you with a package for nicotine and all its dependencies, in which case it should be as easy as emerge nicotine, apt-get install nicotine or whatever way your distribution provides you to install packages.

debian: apt-get install nicotine

gentoo: emerge nicotine

However, this is usually not the case. This section of the FAQ is supposed to help you get on your way.

Edit this entry / Log info / Last changed on Tue Feb 3 12:15:14 2004 by stillbirth


2.2 How do I install nicotine in a slightly less ideal world? [SuSE, Mandrake, MacOSX/Fink, RedHat]

In a slightly less ideal world, your distribution doesn't provide a package for the nicotine application (or some dependencies), but they're available from different online repositories. Here's a small list of some of the repositories.

Fedora Core 1 and 2 RPMs: http://manta.univ.gda.pl/~mgarski/RPMS/nicotine/index.html [up to date, 1.0.8rc1]

SuSE (9.1, 9.0 and 8.2) RPMs: http://guru.linuxbe.org/rpm/packages/Network/nicotine/ [up to date, 1.0.8rc1]

Mandrake (9.2, 9.1 and cooker) RPMs: http://plf.zarb.org/ [up to date, 1.0.8rc1]

MacOSX using Fink: http://detriot.org/ [link broken]

RedHat 9 RPMs: http://bat.is-a-geek.com/nicotine/index.html [link broken]

More RedHat 9 RPMs: http://ftp.falsehope.com/home/tengel/nicotine/ [link broken]

Edit this entry / Log info / Last changed on Sat Jul 17 09:24:19 2004 by hyriand


2.3 How can I install nicotine from a tarball?

If no packages are available for your system, there's always the good old way of doing it yourself. Get the nicotine-<version>.tar.bz2 from the nicotine homepage, make sure the python-devel package is isntalled (if your distribution provides such a package), and type (preferably as root):

 tar jxvf nicotine-<version>.tar.bz2
 cd nicotine-<version>
 python setup.py install
And nicotine should be installed.

Edit this entry / Log info / Last changed on Thu Aug 28 18:37:10 2003 by hyriand


2.4 How can I create an RPM from the nicotine tarball?

Get the nicotine-<version>.tar.bz2 file from the nicotine homepage, make sure you have the python-devel (if such a package is available) package installed and type:

 tar jxvf nicotine-<version>.tar.bz2
 cd nicotine-<version>
 python setup.py bdist_rpm
After some (a lot) of output, a nicotine RPM should be in the dist subdirectory.

Edit this entry / Log info / Last changed on Thu Aug 28 19:41:10 2003 by hyriand


2.5 What if I don't have (new enough) PyGTK bundled with my distribution?

Well, then you have a problem (which is not unsolvable of course). Get the newest PyGTK (the 2.0 branch) from ftp://ftp.gtk.org/pub/gtk/python/v2.0/. Install the development packages for GTK+2 (gtk2-devel, atk-devel, pango-devel, glib2-devel). Install the development package for python (python-devel) and type:

 tar zxvf pygtk-<version>.tar.gz
 cd pygtk-<version>
 ./configure --prefix=/usr --enable-threads
 make
 su
enter your "root-password"
 make install
and you should be ready to go.

Edit this entry / Log info / Last changed on Tue Oct 7 20:26:21 2003 by hyriand


2.6 I'm a MacOSX user and I don't have a clue on where to begin, do you?

Nope.. I don't have a MacOSX machine myself, so officially, I don't provide support for them.
 
Luckily, vasi made a package that should contain everything you need to run Nicotine on MacOSX 10.4 (only on PPC, no Intel Macs) go fetch!
 
Also, various people wrote guides to install all the goo yourself using FINK:
The Mac Users room created their own page which has tips, tricks and other neatness related to running Nicotine on MacOSX: Mac Users: A SoulSeek Room (dead link)

Edit this entry / Log info / Last changed on Tue Jun 24 09:18:34 2008 by Ingmar Steen



3. Usage / Features

3.1 How does queuing work in nicotine (compared to the Windows client)?

Nicotine uses a "round robin" queue. Here's a simple example of what that means: Assume that three users, A, B and C have several files each queued for download (A1, A2, A3, B1, ...). Now, when user A finishes downloading A1, user B is allowed to download, and thus starts transferring file B1. User A has to wait until every user in the queue has downloaded one file, therefore he starts downloading file A2 after user C has downloaded file C1. When another user requests files, the queue just grows, so when user D queues files before user A starts downloading A2, user A has to wait for user D to download his first file as well.

The Windows client uses a simple linear queue, which means that once it is your turn in the queue you usually get all the files you queued in that one request.

The net effect is that with circular queuing downloads usually start faster since you don't have to wait until everyone who queued earlier has downloaded all their files. However, it may take longer to retrieve a larger number of files (such as an album) because other users are allowed to download one file each every time you finish downloading a file of the set you requested.

Edit this entry / Log info / Last changed on Wed Sep 10 20:13:52 2003 by hyriand


3.2 Why can't I set an X number of upload slots?

Because then your bandwidth usage will be sub-optimal.

Example: In the windows client you have set the number of upload slots to 2, and you have a 10kb/s upstream, here's what happens: two users will download from you at 5kb/s even if they could download at 10kb/s. That's bad right? Because user 1 has to wait unnecessarily long for the song to finish downloading.

Another example: In the windows client you have the number of upload slots set to 2, and again you have 10kb/s upstream. Now, there are to modem users that download at 2.5kb/s each. Now 50% of your bandwidth is wasted. That's bad, right? Because the people behind them in queue will have to wait unnecessarily long.

So how does nicotine solve this? By using a dynamic number of slots based on how much bandwidth is still available. Let's assume you've just started nicotine, and somebody (user1) queues some files. Nicotine will start one upload to that user. Now, user2 and user3 queue some files. Nicotine will then analyse the bandwidth usage to see if it's below the configured threshold. Assuming user1 has a decent downstream, he'll use up all the bandwidth, so nicotine won't start another download. User1 gets his files at 10kb/s.

Next scenario, user1 is in fact a modem user that can only download at 2.5kb/s. Nicotine will detect that your bandwidth usage is sub-optimal, and when user2 queues his files, nicotine will start a second transfer.

It turns out that user2 is also a modem user downloading at 2.5kb/s.. And nicotine starts another transfer to user3.

Now, the transfer for user1 finishes. Since user3 can download at infinite speed, he'll be using all the bandwidth and no new slot will be allocated.

Edit this entry / Log info / Last changed on Mon Apr 26 19:06:41 2004 by Hyriand



4. Common problems

4.1 I can't browse / download from / etc user X, why?

Assuming the user is online, the most likely cause is that you both can't receive direct connections. This is usually because you are both behind an NAT-router that isn't set up correctly and/or a firewall. The latter thing is kind of hard to give a simple answer, but check your firewall rules and make sure the client port you are using (usually port 2234) can receive incoming connections (TCP).
 
In the case of an NAT-router, go to the "port-forwarding" or "virtual server" settings of your router, and enable port forwarding for your client port (again, TCP) to your local / LAN IP (this can be somewhat bothersome if you use DHCP).
 
If your NAT router is a linux box, see [this]
 
After this, you should be able to browse / download from / etc just about anyone.

Edit this entry / Log info / Last changed on Tue Dec 2 08:35:49 2003 by stillbirth


4.2 When I try to browse user X, it takes a long time (30 seconds - 1 minute) before the tab shows. Why?

Most likely, user X is behind a firewall that silently drops incoming connections. You have to wait a long time before the connection times out and then ask the server to notify user X's client that you want to connect to him/her. This timeout can be avoided by enabling the "I can receive direct connections" in the Settings window (in the "Server" section), in which case the nicotine client will skip the process of trying to connect to the other end, and just ask the server to ask user X to connect to you.

Edit this entry / Log info / Last changed on Thu Aug 28 19:28:00 2003 by hyriand


4.3 I can't connect to _anyone_! Why?!?

This usually happens when you have turned on "I can receive direct connections" in the settings window when you can't receive direct connections. Either turn it off, or fix your firewall / NAT-router [FAQ 4.1].

Edit this entry / Log info / Last changed on Thu Aug 28 19:32:55 2003 by hyriand


4.4 I can't connect to the server? What's up?

Several things can be wrong, the server may be down, your connection may be flawed, or someone turned off the internet.

If you're getting a (-2, 'Name or service not know') error when trying to connect, go to the server settings and change the servers address to: 38.115.131.131:2240

Edit this entry / Log info / Last changed on Tue Nov 25 08:08:05 2003 by hyriand


4.5 Port forwarding from a linux NAT router

Port forwarding is quite easy if your router is a linux (2.4+) box. Just adding the following command to a start-up script usually does the trick

 iptables -t nat -A PREROUTING -p tcp --dport 2234 -i $WORLD_INTERFACE -j DNAT --to $LOCAL_IP
$WORLD_INTERFACE being the adapter used to connect the router to the internet, and $LOCAL_IP being the IP of your PC in the LAN.

Edit this entry / Log info / Last changed on Tue Dec 2 08:31:33 2003 by stillbirth


4.6 Searches yield no results.. what's going on?

Due to a small protocol change, searching only work in Nicotine 1.0.6rc1 (and newer). Download it, unpack it, run it... http://nicotine.thegraveyard.org/

Edit this entry / Log info / Last changed on Tue Dec 2 20:30:10 2003 by stillbirth


4.7 Why do I have high CPU usage when Nicotine is idle?

One possiblity is that the number of shares you have and the number of search results you give out are both too high.

Try limiting the number of search requests under Misc->Searches to a smaller number.

Of course, you maybe be running Nicotine on your watch...

Edit this entry / Log info / Last changed on Fri Feb 6 08:03:32 2004 by daelstorm


4.8 How to resolve "File not shared" errors

It may happen, that a user on the other end reorganizes their shares while a download of yours is running.

This will result in a "File not shared" error in your client.

To resume downloading do the following:

Find out where the user is keeping the file now. Either by browsing their shares or by asking them if they are behind a firewall and cannot be browsed.

If the user remove the file from the share, then you will have to negotiate with that other person anyway ;)

Open the file /home/[your username].nicotine/config (use an editor that does not wrap lines by introducing linebreaks ... vi should be fine!!)

Find the line "downloads" and locate your download there. Edit the remote path that is set for this download

Restart nicotine.

The download should resume now.

Edit this entry / Log info / Last changed on Sat Feb 21 18:21:51 2004 by conoshpaera

Search FAQ What's new? FAQ Index Whole FAQ Routlette Add entry
Nicotine FAQ | Nicotine homepage | Feedback to hyriand at thegraveyard.org