QConsole

QConsole is an utility which allows you to login in any Symbian devices and perform certain operations.
Download

QConsole Ranking & Summary

Advertisement

  • Rating:
  • License:
  • GPL
  • Price:
  • FREE
  • Publisher Name:
  • Davide Libenzi
  • Publisher web site:
  • http://www.xmailserver.org/davide.html

QConsole Tags


QConsole Description

QConsole is an utility which allows you to login in any Symbian devices and perform certain operations. QConsole is an utility which allows you to login in any Symbian devices and perform certain operations in a more easy and fast way than the standard GUI. Running applications (especially gdbstub) with parameters was especially what drove with to write QConsole. It is a Syambian executable (exe) that listen to the next available RFCOMM channel and serves only one connection at a time. While it is possible to have multiple connections served at the same time, given the nature of Symbian devices, such feature can be skipped (at least for the very first releases, and you can always run multiple copies of QConsole). The QConsole client is available for Linux and Windows.BuildIn order to use QConsole, you need the QTTY console client (valid for QConsole and WmConsole), and the qconsole server EXE. Please take a look at the QTTY home page for a description about how to build it and use it (no need to build the Windows version if you don't want to - a pre-built binary is availble inside the package). About the qconsole EXE, you have the .mmp file, so you can use your preferred tools to build an ARMI binary for your device. I personally use an all-native-Linux SDK that allows me to run the full development cycle on my Linux workstation (if I will find time to polish it, I will probably publish my Perl scripts and modified tools somewhere on this site). Once you built the qconsole EXE (you can also use the ready-to-use SIS install package available for download below, in case you're unwilling or unable to make a build), you need to upload it on the device. I personally find the NFS connection very handy for this (even though YMMV using p3nfs):http://www.koeniglich.de/p3nfs.htmlThrough QConsole get and put commands you can still upload and download files on and from your device though.SetupFirst off, setup you kernel to have BlueTooth modules available for load, of directly linked inside the kernel. If you use a modern distro they already are in the correct plane for you. If you're using an old distro that doesn't have them, I'm assuming you can figure it out by yourself how to compile a new kernel with the required features (BlueTooth support). The you need to install BlueZ Linux packages to set up the userspace infrastructure for BlueTooth. In my current setup:# apt-cache search bluezbluez-bluefw - Bluetooth firmware loaderbluez-hcidump - Bluetooth HCI protocol analyzerbluez-libs - Bluetooth librariesbluez-libs-devel - Development libraries for Bluetooth applicationsbluez-pan - Bluetooth PANbluez-pin - D-BUS Bluetooth PIN helperbluez-sdp - Bluetooth SDP libraries and utilitiesbluez-sdp-devel - Development headers and libraries for Bluetooth SDPbluez-utils - Bluetooth utilitiesIf you're planning to play with Linux BlueTooth, I suggest you to install them all. Then you can activate the BlueTooth stack. You can use this simple script, that if all goes well should bring you BT stack up in place:#!/bin/sh/usr/sbin/hciconfig hci0 up/usr/sbin/hcid/usr/sbin/sdpd# HCI needs some time to "stabilize" before it starts accepting commands (/me think)sleep 4/usr/sbin/hciconfig hci0 noauth/usr/sbin/hciconfig hci0 name MYDEVYou can find out if everything went fine by doig:# /usr/sbin/hciconfig -aThis is the output in my machine (will be different on yours, depending mainly on the BT device you have):hci0: Type: USB BD Address: 00:04:61:80:77:0F ACL MTU: 192:8 SCO MTU: 64:8 UP RUNNING PSCAN ISCAN ENCRYPT RX bytes:3521272 acl:126808 sco:0 events:30041 errors:0 TX bytes:4021524 acl:35060 sco:0 commands:1562 errors:0 Features: 0xff 0xff 0x0b 0x00 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 Link policy: HOLD SNIFF PARK Link mode: SLAVE ACCEPT Name: 'MYDEV' Class: 0x120104 Service Classes: Networking, Object Transfer Device Class: Computer, Desktop workstation HCI Ver: 1.1 (0x1) HCI Rev: 0x1bb LMP Ver: 1.1 (0x1) LMP Subver: 0x1bb Manufacturer: Cambridge Silicon Radio (10)The next step is to edit your /etc/bluetooth/pin file to set a PIN different from "BlueZ". Then you can start by activating the BlueTooth stack on your device. In my Nokia 6600 is inside the "Connections" folder inside the main menu. Then, it is time to pair your device with your PC BlueTooth link. Somewhere inside your device's BlueTooth menus there is the option to pair your device with other ones. Select that and let your portable device to scan for available devices in your piconet. It should fine your PC node with the name you set in your BT startup script (MYDEV in the example above). Select it and input the PIN you set in your /etc/bluetooth/pin file. If it doesn't accept it, you likely changed the /etc/bluetooth/pin after you started the BT stack on your machine. Stop the BT stack with something like:#!/bin/sh/usr/bin/killall -TERM sdpd/usr/bin/killall -TERM hcid/usr/sbin/hciconfig hci0 downThen restart it again using the same script you used before. This time you should be able to successfully pair you portable device with your Linux box. It's not over on that side, since you will need to set you Linux box BT node (that you just paired) as authorized. The qtty client accepts either BlueTooth device names or BlueTooth device addresses to be specified with the "--qc-addr BTADDR" command line directive. You can use 'hcitool' to find out all reachable device in your area. In my case it will show:# hcitool scan00:0E:6D:20:3E:ED Dudi6600Here "Dudi6600" is the name I gave to my BT device, and "00:0E:6D:20:3E:ED" is the BT device address (BTADDR) we were searching for. The next step involves editing the c:systemdataqconsole.txt file to change/add users. The file lists many lines in the "USERNAME PASSWORD" format. It's time to start the QConsole binary on your device, that, if nothing really wrong happen, will display:QConsole ready on channel NNAt this point you can finally run qtty to connect with your device QConsole server:$ qtty --qc-addr BTADDR --qc-channel NN --user USER --pass PASSIn my case it will end up to:$ qtty --qc-addr Dudi6600 --qc-channel 4 --user USER --pass PASSIf you use BlueTooth device names instead of addresses, it can happen that, if the BlueTooth name is not cached inside the qtty device cache file, it can take ten to fitheen seconds for the name lookup (once the name is cached, it will be instantaneous). You should see the QConsole welcome message and its prompt ("$ "). The default USER as installed by the .SIS file supplied with the tarbal is "qconsole", while the default PASS is "server" (and you are suggested to change them).Commands ReferenceUsage: helpPrints the QConsole help screen.Usage: pwdPrints the current working directory. File names that are not prepended by drive names or backslash are assumed from the current directory (pwd).Usage: exitQuits the QConsole session.Usage: shutdownQuits the QConsole session and tells the QConsole server to shutdown.Usage: rebootQuits the QConsole session and reboot the remote device.Usage: cd DIRChange the current directory to DIR. The DIR parameter can be the string "..", that will make the current directory to go up one level.Usage: ls Lists the current directory or the specified path.Usage: psLists currently running processes. The format of the output lines is:PID PPID FLG PRI UID2 UID3 NAMEWhere:PID = Process IdPPID = Owner process IdFLG = Flags: P = Protected R = Loaded from ROMPRI = PriorityUID2 = Second UID of the applicationUID3 = Third UID of the applicationNAME = Process nameUsage: kill PIDTerminates the process identified by PID.Usage: prio PID PRIOAdjust process PID priority to PRIO. the priority PRIO can be one of:L = LowB = BackgroundF = ForegroundH = HighUsage: prot PID PROTSet/unset process PID protected state. The PROT parameters can be one of:P = ProtectedU = UnprotectedUsage: pinf PIDDisplay process PID informations.Usage: pren PID NAMChange process PID name to NAME.Usage: run APP/EXE ...Starts the application or exe with the specified parameters.Usage: drivesLists available drives and associated information. The output of the command is composed by many lines with the format:DR FST SIZE FREEWhere:DR = Drive nameFST = File system typeSIZE = Drive size in KbFREE = Drive's free space in KbUsage: mkdir DIRCreates the directory specified by DIR.Usage: rmdir DIRRemoves the directory specified by DIR.Usage: rmtree DIRRemoves the whole tree underneath DIR. Note that no confirmation is asked, so the command can result pretty dangerous.Usage: rm FILERemoves the file specified by FILE.Usage: chmod MODE FILEChange the access mode of FILE applying MODE changes. The MODE paremeter is composed by a first character either '+' (add mode) or '-' (remove mode), and one or more mode characters:h = Hiddenw = Writes = SystemUsage: mv OLD NEWRenames files or directories from OLD to NEW. The two file names must be on the same drive for the `mv` command to succeed.Usage: cp SRC DSTCopy SRC file onto DST file.Usage: cat FILEDump the content of remote file FILE on screen.Usage: lsthr Lists threads of process PID, or all existing threads if PID is not specified. The output of the command is composed by multiple lines with the format:TID PID FLG PRI HSIZ SSIZ PH TH NAMEWhere:TID = Thread IdPID = Process IdFLG = Thread flags: P = Protected R = Loaded from ROMPRI = Thread priorityHSIZ = Heap size in KbSSIZ = Stack size in KbPH = Process handle countTH = Thread handle countNAME = Thread nameUsage: lssemLists all global semaphores available on the system. The output of the command is composed by multiple lines with the format:CNT NAMEWhere:CNT = Semaphore internal count valueNAME = Semaphore nameUsage: lsrchkLists all global memory chunks available on the system. The output of the command is composed by multiple lines with the format:CSIZ MSIZ FLG MADDR NAMEWhere:CSIZ = RChunk current size in KbMSIZ = RChunk maximum size in KbFLG = RChunk flags: R = Readable W = WritableMADDR = Mapping address seen by the QConsole processNAME = RChunk nameUsage: lspddLists all physical devices available on the system. The output of the command is composed by multiple lines with the format:NAMEWhere:NAME = Physical device nameUsage: lslddLists all logical devices available on the system. The output of the command is composed by multiple lines with the format:NAMEWhere:NAME = Logical device nameUsage: lsdllLists all loaded DLLs available on the system. The output of the command is composed by multiple lines with the format:NAME UID2 UID3 FILENAMEWhere:NAME = DLL internal nameUID2 = Seconds UID of the DLLUID3 = Third UID of the DLLFILENAME = Full path of the executable from where the DLL was loaded fromUsage: hdumpDumps all the device infromation available on the system.Usage: find PATH MATCHRecursively searches inside PATH for MATCH file or directory name (wildcards are allowed in MATCH).Usage: getchk CHK LOCDumps the content of the remote chunk (on device) CHK to local file LOC.Usage: get REM LOCCopies the remote file(s) (on device) REM to local file/path LOC. Wildcards allowed in REM. Allowed flags for the command are:R = Recurse to subdirectoriesUsage: put REM LOCCopies the local file(s) LOC to the remote file/path (on device) REM. Wildcards allowed in LOC. Allowed flags for the command are:R = Recurse to subdirectoriesf = Force the missing subdirectories creation


QConsole Related Software