Virca Manual

For downloads, go here.
Check the contributed Russian version.
When first starting Virca, this is what you'll see, a screen with a list of profiles (here just the Default one), and a list of actions to perform.

This screen contains three commands: Exit, Globals and Ok. This emulator shows Exit and Menu, and when selecting Menu, you get a choice of Globals and Ok. This is implementation specific. Your particular phone may choose to map the commands to seperate buttons, or use a system similar to this one. I willalways refer to the commands by name.

By selecting the Globals command in from the options screen, you can set two options that will apply to all profiles: Real Name and Username. Real Name is the name that shows up on your whois and should be your actual name, such as "Vidar Holen". The Username should be whatever you usually use for a username, such as "vholen". Defaults will be created if you don't fill these in, so feel free not to bother.
Let's create a new profile. From the Options screen choose the 'Create New' action.
A 'New Profile' dialog will let you enter the name of your new profile. I usually use the network's name, in this case Freenode. Hit Ok when you're done.
You will now find yourself in the profile setup. All the fields are filled in with defaults.

The Host field is the server to connect to, and must be in the form "server:port". For freenode, we'll go with the default "".

The Nick field is the nickname, obviously.

The Channels field is a comma-separated list of channels to join when you enter. In this profile we wish to join #virca and #bubbles, so we enter "#virca,#bubbles".

The Password field is the server password to use. Private servers and BNCs will use this for authentication. Leave it blank for public servers.

The Font Size is so obvious it's not depicted. You have a selection of Small/Medium/Large. Small is recommended to fit as much text as possible.

The Color Scheme will let you choose what colors Virca will use. Your device will probably either block light to create black, or emit light to create white. Therefore, choosing the right color scheme could extend battery life (black on white and white on black respectivly). Grayscale phones can use the Grayscale optimized mode to rely on brightness rather than hue for signaling.
You can choose a Codepage to map foreign character sets to extended ascii. Note that UTF8 and similar will not require codepages. Currently there is support for CP1251 (Cyrillic) and KOI8-R (Russian). Mail me to suggest other codepages.

Most users will probably choose None here.

Connection Mode has been removed in 1.1.1
The Connection mode chooses what protocol to use for connecting. Some phones do not support tcp/ip connections ("socket://host:port") which are what irc servers require. Trying 'socket' on these devices will give you a ConnectionNotFoundException.

To work around this, I've attempted to create a program that allows phones to connect using http and relay it to an irc server. The result was the HTTP Bouncer as mentioned below. It is very buggy and not expected to work. I've received reports that Sony-Ericsson T610 can handle it as well as Siemens C55 which ironically doesn't need it.

The Http option will use one connection to trickle incoming data, and then connect once per message to send. The Http-swap option will do the same, only break and reestablish the first connection so there is never more than one connection in use at any time. The latter is only needed if the phone starts complaining about too many connections.

All in all, try 'socket' first. If it works, great! If it doesn't...well...don't get your hopes up.

Some phones have broken socket implementations; a blocking read call will also block write calls. The main symptom for this is that messages you type don't show up in the channel until 20-30 seconds later. If this happens, and it's not just lag, choose Quick poll. If the program reacts a little slow, try Slow poll.

If you have this problem but Poll mode doesn't work, you could alleviate the problem by either joining a busy channel (0.5-2 lines per second or so), since the phone will only be able to send data once it receives something.

The Poll modes will use InputStream.available() to determine if the there is data to be read. If there is no data, no attempts to read will be made, thus it won't block. The difference between them is that Slow poll will wait 1000ms between each check, while Quick poll waits 100ms. Note that some phones have broken available() implementations that always returns 0. In these cases Poll will not work at all, which is why it isn't the default. Nokia 6800 requires polling.

Ok then, that was all the options. Hit OK to go back to the options screen. Select the new profile from the profile list and Use from the action list. Hit OK.
It might take a long time to connect (1-2 min). When it finally finishes, this is something along the lines of what you'll see.

At the top there is a long bar divided into subrectangles (two in this case). Each subrectangle represents a window (a channel or user). I will refer to the bar simply as "the bar", and each subrectangle as "a tab". The current window's tab is marked by a smaller black rectangle, as seen on the top left. The second tab is green; this means that there has been channel movement since last you looked. A blue one means that someone has said something. (light gray and dark gray for Grayscale optimized)

The middle area contains text. You can scroll in it using the Up and Down keys on phone (same as in games, perhaps 2 and 8 or Selection up and down). When you scroll, a tiny black rectangle will appear on the right, rising towards the top of the screen as you scroll further back in time (not depicted). There are six pages of backbuffer.

Now let's check the other window.

Press Right (or Left, and it will wrap around), and the display will change to show #bubbles, which was the other channel we entered into the profile. Notice how the right most rectangle of the top bar now is marked as active, while the other is blank.
When a tab turns blue (dark gray), it means people have spoken in another window. If it turns green (light gray), it means people have joined/quit or similar.

Press Left.

Sure enough, koala_man (yours truly) has spoken. Let's reply.

Hit the Input command.

Enter whatever you want to say in the Text field...
The Mode selection thing was removed in 1.1.14 in favor of commands. Hit "Say" to say it.
Your lines are prefixed by a > sign. Notice how wrapped lines always start slightly indented (it'd be fairly easy to spoof replies without it).
The other command is Emote, which works like /me in most clients. Enter "feels great." and hit Emote.
...and "* panda_man feels great." appears. Yay. Using emotes for anything other than actual emoting is concidered stupid.
Using the Menu command will land you on this screen, the Virca Menu. There are four selections, Favorites, Clear, Close Window, and Quit.
Select Favorites, and you'll be in the favorites screen. Here you can add long commonly used commands that you'd like to avoid typing every time. They are shared between all profiles.

Use the Add command to add a new favorite.

Enter your line in the text box, then hit Ok.
It will now appear on the favorites screen and you can check it. It will be interpretted as if you'd typed it in the Input screen with the Say mode, ie /raw and such works fine.

To send it, use the Send command.

And now you can say this as often as you want without typing it again every time.
Psst, here's a secret tip! (and it really is secret, since no one ever bothers to read the manual) If you prefix the message with a semicolon, it will be sent when you connect! You can use it to identify with NickServ for example. Do keep in mind that it will apply to all profiles. It's just a hack and I'd sooner remove it than extend it.
So you just had an incriminating conversation? You can select Clear from the menu to clear the current window, or hit the *-key on your phone.
The current window, including backbuffer, will be wiped clean.
Nothing interesting is going on in #bubbles. Let's leave. Make sure #bubbles is the active window, and select Close window from the menu. You can also hit the #-key on your phone.
Notice how the bar now contains a single tab. Closing all windows will have undefined results (crash!).

Action shots

Fun in bed (A008).
Good times by the pool in Bangkok (6800).

Additional commands

The following commands can by typed into the Input dialog. They all start with a slash (/), which is required.
/msg/mSend a message to a person. /msg koala_man hey
/rawSend a raw command to the irc server. /raw nickserv help. Also, use /raw list instead of /list
/nick/nChange nickname. To make it permanent, edit your profile instead. /nick rollingbone
/join/jJoin a channel. /join #virca
/meSame as selecting Emote. /me likes waffles.
/close, /part/c, /pClose the window and leave the channel
/query/qOpen a window to another person, without actually saying anything. /query koala_man
/pingPing the user, to test the latency. /ping koala_man
/ctcpSend a CTCP message. Virca only interprets ping and version replies, the rest are printed. /ctcp koala_man version
/where/wShow the name of the current channel/person. /where
/topic/tSets topic. /topic Hell is other people
/modeSets mode. /mode +o koala_man
/kickKick user. /kick koala_man Get out!
/namesShow who's on the channel. /names
/whoisShow information about a nick. /whois koala_man
/serverChange server. This should be done from the profile selection, as it can be a bit unstable. /server
/dataPrint number of bytes received and sent (to keep track of costs).
/date, /timeShow the current time (as provided by the device)


Why is loading so slow?

The server has quite a bit of messages to send you before anything can continue (mainly the motd). Just wait and it will finish eventually.

How do I do [insert IRC related question]?

I really didn't mean for this to be an intro in irc. If you don't know the basics, I suggest you get some PC client like Bersirc or XChat.

I keep getting disconnected, what gives?

Many countries have poor service, especially lower tech ones such as the United States. This can cause connections to be dropped at random.

Connections are reliable, but I can't connect to [big network].

Some poor providers might run all their traffic through a single gateway, and most networks allow only 2-3 connections pr ip. Therefore, you might not be able to connect. If that's a problem, you could either change irc networks or set up a bouncer (any irc bouncer will do). Or change to a provider that uses several ips (I use Telenor).

I just changed operator, and now I get strange erros when trying to connect

Try deleting Virca and then reinstall.

Why do I get these weird Exception messages? : The requested protocol does not exist socket://etcYour phone does not support sockets. You could try a firmware upgrade, but other than that, it's incurable. Sorry.
Reported from various Nokia models. Domain name is not valid: java.lang.Exception: Error talking to DNS server UDP write errorSomething's wrong with your DNS setup. Go to "Java Info" on the phone's menu and set DNS IP in the submenu (to for example ""). You can also work around it using IPs instead of hostnames (such as "" instead of
Reported from Motorola T720. : Error occured whilst opening connectionSee below
Reported from Nokia 6800. Indication on open0See below
Reported from Motorola T720. is usually caused by wrong connection settings. Try following the provider's instruction more carefully.
The usual problem is that the provider uses two different connection profiles, one for WAP and one for everything else. These typically have Access Point Names (APN) of "" or just "wap", and "" or just "internet". You want to use the latter with Virca. Exactly how you configure this is up to the phone, so check the manual.
java.lang.Exception: Connection EOF@[number]The connection was lost, and there were 'number' bytes in the buffer. This might be caused by a gateway sending WML responses on timeouts and such. Try another server and/or another port.
Reported from Siemens S55.
java.lang.IOException: -33-33 is Symbian for Timed Out. This can occur if your timeouts are set too low in the phone's network configuration, you use the wrong host or port, or if your subscription only allows WAP. Try another host and port, or check your subscription details (or try port 80 ;).
Reported from Siemens S55.
905 attribute mismatchYour phone chokes on the Midlet-Permissions line (can't blame it, since it's not midp1.0). Try this version: jad, jar. Source is the same, only the jad/manifest is different.
Reported from the BlackBerry.

Other stuff to try: