User Guide (AirDC++ nano)

Written by
Rate this item
(6 votes)


AirDC++ nano is a high-performance text-mode client for sharing, chatting and downloading in ADC and NMDC hubs, which can be run on Linux servers. It uses the same core than the Windows version so you can take benefit of features like multiple per-user connections, share profiles, IPv6, multithreaded hashing etc. The user interface is a modified version of the one used by nanodc


1. Installation

These instructions are targeted for Debian (Jessie, 8.0+) and Ubuntu (14.04) but the client has been successfully installed on various other operating systems as well.


You should use the UTF-8 locale with the client. Special characters won't be displayed correctly otherwise.

Install the compiler (if you don't have one)


apt-get install gcc g++



sudo apt-get install gcc g++


Supported compilers:

  • GCC 4.8+
  • Clang 3.3+

Install the required packages

Debian Jessie

apt-get install libbz2-dev libncursesw5-dev scons zlib1g-dev libglib2.0-dev libssl-dev libstdc++6 libminiupnpc-dev libnatpmp-dev libtbb-dev libgeoip-dev libboost1.55-dev libboost-regex1.55-dev libboost-thread1.55-dev libboost-signals1.55-dev libboost-system1.55-dev libleveldb-dev

Ubuntu 14.04

sudo apt-get install libbz2-dev libncursesw5-dev scons zlib1g-dev libglib2.0-dev libssl-dev libstdc++6 libminiupnpc-dev libnatpmp-dev libtbb-dev libgeoip-dev libboost1.55-dev libboost-regex1.55-dev libboost-thread1.55-dev libboost-signals1.55-dev libboost-system1.55-dev libleveldb-dev


yum install gcc-g++ bzip2-devel ncurses-devel scons zlib-devel glib2-devel openssl-devel libstdc++-devel miniupnpc-devel libnatpmp-devel tbb-devel geoip-devel boost-devel leveldb-devel

Note that the natpmp library is not mandatory (it's only an alternative way to map ports with NAT-PMP capable routers in addition to UPnP). TBB is also optional and it's available only on x86 system architectures.

Download the client

2. Release

Download the package

If you get an error related to the certificate, ensure that you have the package "ca-certificates" installed.

Extract it

tar zxvf airdcnano-1.06.tar.gz
cd airdcnano-1.06

3. Git

Install Git

apt-get install git
sudo apt-get install git

Get the source

git clone cd airdcnano


scons -j2


-j2 means that the client is compiled by using 2 threads. It's a good idea to replace the value with the number of available CPU cores. NOTE: each compiler thread requires about 1 GB of free RAM and the compiler will crash if it runs out of memory.

Compiling times will vary; it takes about a minute with a fast Haswell CPU and almost an hour with a slow dual-core Atom with GCC. Clang will usually cut the compiling times in half.



scons install


sudo scons install

Run the client



There's a short wizard in the beginning which helps you to set up the required settings.


4. Keyboard shortcuts

Any window

Ctrl+X Close the window
Alt+[1-9] Change the active tab
Alt+Left/Right Switch to the next/previous tab
Ctrl+E Refresh share
Ctrl+H Open favorites
Ctrl+L Clear window
Ctrl+P Open public hubs
Ctrl+S Open log window
Ctrl+T Open transfers
Ctrl+Q Open queue


Ctrl+R Reconnect

Public hubs

f Add to favorites
c Connect
s Sort items
h Set the number of the hublist to download
d Download the hub list

Filtering hubs

s Description
a Address
u Users
m Maximum share
n Minimum share

Favorite hubs

c Connect to the hub
d Delete the hub
D Delete the hub without confirmation
e Edit the selected hub
n Add a new favorite hub
m Move the select hub to a new position in the list
<space> Toggle autoconnect


b Browse user's file list from the selected directory
d Download selected item
D Download selected item to a specific folder
s Download directory
S Download directory to
M Match queue
r Search

Search result filtering

l Toggle free slots-only results
n Minimum size
m Maximum size
e File extension
f Textual filter
c Clear search results


a Search bundle for alternates
i Recheck bundle integrity: re-adds corrupted file segments for downloading, detects already downloaded segments/files
p Set bundle priority (0-6)
r Remove bundle from queue
R Remove bundle and all its finished files from queue
m Move the bundle and all its finished files to a new location
S Rescan a failed bundle
F Force a failed bundle to be added in share


b Browse file list
m Send private message
F Force connection
r Remove source from queue (all files)
R Remove file from queue
c Disconnect

File lists

d Download selected item to the default download folder
D Download selected item to a custom folder
r Reload the current directory
<enter>/<right arrow> Enter the selected directory
<left arrow> Go to parent directory

File list filtering

n File/directory name


5. Commands

General Commands

away   Enable away mode
cancelhash   Stop hashing
clear   Clear the screen.
connect <address> [<share profile>] Connect to a hub (optionally with the given share profile). 
connectioninfo   Display the current status of incoming connection
dcset <key> [<value>] You can view or change DC++ core settings with /dcset command. /dcset without any arguments displays all the settings. /dcset <key> <value> sets <key> to <value>. /dcset <key> will display the current value of the key
dcreset <key> Reset a setting to its default value
help   View the list of help command
motd   Print information about shared files, nanodc version and connection settings (executed when the client is started)
nick <nick> Change the default nick
open <favorites|hublist|queue|syslog|transfers> Open the specified tab (or make it active)
optimizedb   Remove hash database entries for files that aren't currently in share
refresh  [<path/virtual name>] Refresh the share or a specific path/virtual directory 
search <string/TTH> Search files
share  <add|remove|list> add: Add a new directory in share. Arguments: <path> <virtual name> [<profile>] [<incoming>]

Example: /share add Incoming /home/ftp/ myshareprofile 1

remove: Remove a directory from the share (or from a profile). Arguments: <path> [<profile>]

list: List shared folders (or folders in the specified profile). Arguments: [<profile>]

shareprofile <add|remove|rename|list>

add: Add a new profile with the given name. Arguments: <profile name>

remove: Remove the given profile. Arguments: <profile name>

rename: Rename the selected profile. Arguments: <current name> <new name>

list: List all share profiles

quit   Quit
verifydb   Remove unused entries from the hash database and verify the integrity of the data
wc   Close current window
window <list|close|move|prev|next|[1-X]>

list: list the open tabs

close: close the current tab (same as /wc)

move: move the window to a give position. Arguments: first|last|prev|next|[1-X]

prev: switch to the previous window (shortcut: Alt+left)

next: switch to the next window (shortcut: Alt+right)

Hub Commands

browse <nick> Browse file list from the specified user
fav   Add the hub in favorites.
msg <nick> [<msg>] Send a private message to the specified nick (or open an empty PM tab)
info <nick> Show various information about the user (description, tag etc.)
names   List all users in the hub
reconnect   Reconnect to the hub (shortcut: Ctrl+r)
showjoins   Show joining/parting users in the chat


6. Configuration

6.1. ~/.airdc++/.nanodcrc

Example of ~/.airdc++/.nanodcrc file:

    # ~/.airdc++/.nanodcrc
    # block the message if the first line includes
    block_messages = http://;www.
    # save the file every time something is edited
    # otherwise it will be saved on exit
    save_on_edit = true
    # ignore all messages from these nicks
    ignore_nicks =
    # figure it out, sherlock
    hilight_words = nanodc;xcow
    # timestamp format
    timestamp_format = %H:%M:%S
    # /command or :command
    command_char = /
    # whether or not to show nicklist when joined to the hub
    show_nicklist = true
    # true: [17:10:01] -!- Kyösti [] has left the hub
    # false: [17:10:01] -!- Kyösti [] has left the hub
    resolve_ips = true
    # how many lines to save in private message/hub windows
    lastlog_size = 1000


6.2. AirDC++ core configuration

Use "/dcset setting value" to change a setting, where "setting" is one of the settings that are listed below.



Settings profile, used to optimize various default settings

  • 0 = Normal (use if unsure)
  • 1 = RAR hubs
  • 2 = LAN/WAN hubs
nick Your nick
description Your decription
email Your email address
ul_speed Upload speed (Mbit/s)
dl_speed Download speed (Mbit/s)
away_message Message to send when receiving a private message when away mode is enabled
away_idle_time Idle time in minutes before enabling the away mode automatically
away_no_bots Don't send away message to bots
nmdc_encoding Character encoding to use in NMDC hubs



Default download directory

temp_dir Directory to use for temp files while downloading (not used when "temp_use_dest" is enabled)
temp_use_dest Put temp files in the final destination directory
add_finished Add finished bundles downloaded in share as soon as they finished (when downloading in a shared directory)
finished_no_hash Don't hash instantly shared bundles (or perform SFV check for them)
segmented_dl Enable segmented downloads
min_segment_size Minimum segment size (KiB)
new_segment_min_speed Don't begin new segment if the file speed exceeds this value (KiB/s)
allow_slow_overlap Allow a fast source to overlap slower ones when there is nothing else to download

Search matching options


Automatically add sources for queued files when receiving a matching search result

alt_search_auto Automatically search for alternate sources for queued bundles (requires auto_add_sources to be enabled)
alt_search_max_sources Don't perform automatic searches for bundles with more sources than this (average sources per file)
max_sources_match_queue Maximum bundle sources to match the whole bundle for search results

Skipping options (queuing)


Don't queue files that exist in share already

dont_dl_queued Don't queue files that exist in queue already
dupe_min_size Skip the dupe check for files smaller than this (KiB)
skip_zero_byte Don't download empty files
dl_skiplist Don't download files matching this pattern (wildcards)
dl_skiplist_regex Use regex format for the download skiplist


http_proxy Default download directory
  • 0 = Direct Connection
  • 1 = SOCKS5
socks_server SOCKS5 server
socks_resolve Use the SOCKS5 server to resolve host names

Incoming connection

Connection4_-prefixed entries are for IPv4 connectivity and connection6_* for IPv6.




Detect the connectivity mode and settings automatically for the given protocol



Bind address (IP, use the tab key for suggestions)



  • 0 = Direct connection / Firewall with manual port forwarding
  • 1 = Firewall with UPnP
  • 2 = Passive mode



External IP address
tcp_port TCP port (transfers)
udp_port UDP port (mainly searching) 
tls_port Port for encrypted transfers (TCP, must differ from the transfer port)

Download limits


Detect the download limits based on the configured download speed (dl_speed)


Maximum simultanous download connections

dl_max_slot_speed Don't exceed new downloads if the total speed exceeds this value (KiB/s, 0=disabled)
dl_highest_prio_slots Number of extra slots for bundles/files using the highest priority

Upload limits

ul_auto_limits Detect some of the upload limits based on the configured upload speed (ul_speed)

Grant a new slot if the total speed is lower than this (KiB/s)

ul_max_granted Maximum number of automatically granted slots
ul_slots Number of upload slots
ul_minislot_size Grant a minislot for files smaller than this (KiB)
ul_minislot_ext Grant a minislot for the given file extensions

Transfer rate limiting

limit_ul_max Maximum upload speed

Maximum download speed

limit_use_alt Use alternate limits for the given time period
limit_alt_start_hour Start hour for alternate limits (0-23)
limit_alt_end_hour End hour for alternate limits (0-23)
limit_ul_alt_max Maximum upload speed (alternate hours)
limit_dl_alt_max Maximum download speed (alternate hours)
limit_use_with_auto_values Count the various upload and download limits based on the limiter values (if enabled)

Per-user connection limits

mcn_auto_limits Detect the per-user limits automatically from the line speed

Maximum download connections per user

mcn_up Maximum upload connections per user

Hashing options

max_hash_speed Maximum hashing speed per hasher (MiB/s)

Maximum number of total hashing threads

max_vol_hashers Maximum hashers per volume (recommended to keep at 1 unless the hashing speed is CPU-bound)
report_each_hashed_file Report each hashed file in the system log

Refreshing options

refresh_time Common refresh time for all directories (0=disabled)

Alternative refresh time to use for directories marked as "incoming" (0=disabled)

refresh_startup Refresh the share after the client has been started
refresh_report_scheduled_refreshes Report in system log when a scheduled refresh has started and ended

Sharing options

share_skiplist Don't share files matching this pattern (wildcards)

Use regex format for the share skiplist

share_hidden Share hidden files
share_no_empty_dirs Don't show empty directories in share
share_no_zero_byte Don't show empty files in share
share_max_size Don't share files exceeding this size limit (MiB) 
share_follow_symlinks Report symbolic links when iterating through the files on disk
share_report_duplicates Report files with the same case-insensitive path when generating file lists
share_report_skiplist Report files that aren't shared because they match the share skiplist

Logging options

log_dir Location to save the logs

Log mainchat messages

log_pm Log private messages
log_downloads Log file downloads
log_uploads Log file uploads
log_syslog Log system messages
log_status Log status messages in hubs
log_list_transfers Log file list transfers (uploads and downloads, full file lists only)
single_log_per_cid Use a single log file per CID in ADC hubs even if the nick or other file naming variables differ in different hubs

Log file names: The file name to use for the log file (relative to the main log path, may contain subdirectories).


history_search_max Maximum number of previous search words to save (those can be accessed with tab when using the /search command)

Clear the search history on exit

history_download_max Maximum number of previous custom download locations to save (can be accessed with tab in an empty download location prompt)
history_download_clear_exit Clear the download location history on exit
history_last_pm_lines Maximum number of old chat lines to display when opening a private message window


open_transfers Open the transfers tab on startup

Open the hublist tab on startup

open_favorites Open the favorites tab on startup


socket_read_buffer Bytes


buffer_size Write buffer size (KiB)
compress_transfers Allow dynamic compression for transfers
max_compression Maximum compression level (0-9)

Encryption mode for transfers

  • 0 = disabled
  • 1 = enabled
  • 2 = forced in ADC hubs

Bloom filter mode. Disabled by default since sending the filter with a large share may freeze the chat for a while and increases the upload bandwidth usage.

  • 0 = disabled
  • 1 = enabled
accept_failovers_fav Accept failover addressed sent by favorite hubs that can be used when the hub can't be accessed via the main address


7. Crash?

Post the generated crashlog to


8. Deadlock?

Note: you need to have the package "gdb" installed before following these instructions.

$ cat ~/.airdc++/
attach [number]
thread apply all bt full

Post the full output to


Read 74671 times Last modified on Tuesday, 02 June 2015 21:49
More in this category: AirDC++ nano »

Leave a comment

Make sure you enter all the required information, indicated by an asterisk (*). HTML code is not allowed.