Linux LAN Port Scanner

Just a short post to show how to scan the open ports of a remote machine on the local network: sudo nmap -sS 10.10.10.123 Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2010-04-28 16:00 HKT Interesting ports on 10.10.10.123: (The 1660 ports scanned but not shown below are in state: filtered) PORT    STATE  SERVICE 69/tcp  closed tftp 139/tcp open   netbios-ssn 445/tcp open   microsoft-ds MAC Address: 00:50:FC:B1:E9:70 (Edimax Technology CO.) Nmap finished: 1 IP address (1 host up) scanned in 25.252 seconds

Software Documentation with Doxygen

This is a good practice to always have up-to-date software documentation. However, there can be discrepancy between the source code and the documentation over time and maintenance may be an issue. This is where Doxygen,  a “Source code documentation generator tool”, may be handy as it will automatically generate documentation based on the comments in the source code. In order for Doxygen to work, all developers will have to follow the same source code format in all source files,which is in itself also a plus since it will make the code and especially comments in this case more consistent. We’ll just show to quickly generate html and pdf documentation using a sample program we’ll call cnxapp. So here’s the code for this “application”   #include <stdio.h> /** Function1 description @param iArg1 First param description @param iArg2 Second param description @return 0 – Success -1 – Failure */ int function1(int iArg1, int iArg2) { return 0; } /** Function2 description @param …

Setting up a time server (RFC 868)

This blog entry explains how to configure a time server as defined in RFC 868. not to be confused with NTP which is a newer protocol. This type of server is to be used with rdate as you’ll see below. Edit/ etc/xinetd.d/time and set disable = no. Make sure the lines below are present and uncommented in /etc/services time            37/tcp          timserver time            37/udp          timserver restart xinetd: /etc/rc.d/init.d/xinetd restart The time server will be started automatically each time the PC boots up. To test the time server, in your device use rdate (part of busybox): To set the date: rdate -s IP_ADRESS_OF_TIME_SERVER To print the date in the console: rdate -p IP_ADRESS_OF_TIME_SERVER Check the date by typing date

Optimizing hard disk and compact flash performance in Linux Embedded Systems

Compact flash are often used in Digital Signage applications and hard-disks used in both signage application and IP set-top-box to play high definition videos. However, sometimes the performance of those devices and the performance limitations of embedded systems may make the task difficult especially for higher bit-rate videos. Choosing the right file system Once of the easiest way to improve performance is to select an appropriate file system. The best performance is achieved by ext-2, followed by ext-3, fat 32 and ntfs on the embedded system I worked with at least (e.g. Sigma Designs EM8620 and  SMP8630 series).  Basically, if your CF card/HDD is not supposed to be taken out of your device, then ext-2 is the obvious choice. However, if your user for whatever reasons need to take the devie out and connect it to a Windows PC FAT 32 or NTFS might be a better choice, although it would still be possible to install a ext2 driver such …

NTFS for Embedded Linux Systems

Since now more and more HD videos are larger than 4GB they can not be stored into FAT32 file system, and require the use of other file systems, the most popular being ext2/ext3 or NTFS. However, since many users may want to access the mass storage devices (IDE / SATA harddisk, USB Harddisk, USB Thumbdrives…) in Windows as well as in their embedded systems (IP STV, Digital Signage..) NTFS seems to the best choice to share data between Windows systems and embedded systems using Linux. NTFS is available in the Linux kernel. However only read-only is fully supported and the performance is about 25% less than ext-2 or ext-3 for the platforms we tested (EM8623L and SMP8635), but this is still acceptable to play most of HD Videos. However, if the device also needs to download videos from a server or other P2P clients, having a read-only file systems will not do it. For this purpose NTFS-3G can be used …

Finding and fixing memoy leaks in your software

Memory leaks will cause your device to crash after a period of time once it runs out of memory. A quick way to find out if your application has memory leak(s) is too monitor it with top: PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND 1       root       15   0   2156    668  572 S     0           5 .0      0:00.14         application If you see the %MEM increase over time for no particular reasons, then you’ve got a memory leak. However, it might be tricky to isolate where the issue occurs exactly. The first thing to do is the review your source code for the following: Malloced memory is always freed fopen is always followed by fclose, and open by close scandir calls are properly freed Threads are properly terminated with pthread_cancel & pthread_join or pthread_detach, etc… If after a code review you cannot find the reason for the memory leak, use the following …