“Write failed: Broken pipe?” message on a SSH connection

It so happens that at times the SSH connection was getting lost (probably due to network issues) with a message “Write failed: broken pipe”, and this resulted in a crash in cluster based codes. Thanks to this Archlinux forum post, i understood the workaround.

Broken pipe results upon communication loss between the client and the server. So, if we can somehow send control signals over the connection within a ‘n’ second of the last data transmission, this problem should be solved. This is exactly what the command ServerAliveInterval does. Smaller the time duration specified, earlier the control signal will be sent, and the connection doesnt drop.

To achieve this, just append at the end the following line to /etc/ssh/ssh_config file at the client side :

sudo nano /etc/ssh/ssh_config

ServerAliveInterval 5     (append at the end of the file)

Now, just restart the ssh daemon and its done!

sudo systemctl restart sshd.service  (Fedora / OS having systemd)

sudo service ssh restart  (Linux Mint / OS having Upstart)

This will ensure the control signal inquiring Server Alive status is sent 5sec after every time the connection loss happens, and the cluster based codes can run smoothly!

Experience Gnome3.2 in Fedora 16 via Virtualbox

Upon installing Fedora 16 (Fedora-16-Beta) as a guest OS (via VirtualBox), i was greeted with the Fallback mode, turning my excitement to see Gnome3 in its refined new avatar Gnome3.2 into disappointment. Even installing VirtualBox guest additions didnt help.

Its in such scenarios, that i have found fedora-forums to be the best place to learn the causes and rectify them. Thanks to this thread , i realised its a SELinux policy that prevents gnome-shell from auto kick-starting. Follow these steps to enjoy Gnome3.2 experience :

1) Ensure your guest OS is fully updated. Restart once to boot into new kernel.

sudo yum update

2) Install kernel-devel and gcc, if not already present.

sudo yum install kernel-devel gcc

3) In the VirtualBox Guest GUI, Click : Devices > Install Guest Additions. Provide sudo password when prompted and let the install process complete.

4) Now, Modify the SELInux policy for VirtualBox guest additions as below:

restorecon -R – v /opt

(NOTE: single minus sign is used at both places above)

5) And you are ready to use gnome shell after a reboot. To immediately start it, do:

gnome-shell –replace &

(NOTE : its two minus signs before the word replace ..)

Fedora 16 with Gnome 3.2
Fedora 16 guest OS with Gnome 3.2 running

MATLAB : Get smoothly coloured outputs when using surf / trisurf

I had been struggling since sometime to get smoothly textured outputs using surf / trisurf commands in MATLAB. The edges of the locally planar element being used by the respective commands used to always “stand out” with respect to the texture of the contained patch.  Only today i found out a simple 1 line command that solves this problem..

tri = delaunay(X,Y);

trisurf(tri,X,Y,Z);

shading interp;                   % other options are shading face / shading faceted

And you are done.. you can check for yourself the extent to which this 1 line of code creates a change in visualization of 3d textured data.

Sample outputs, before and after :

surf output BEFORE

surf output AFTER

MATLAB : Generate variable name and allot vector / matrix to it

Matlab provides a nice and simple way to generate continuous set of variable names, say in the form of var1, var2,… etc. This can be accomplished using genvarname and eval commands. Here i’ll show an example where we need to store columns of a matrix A in 3 vectors var1, var2 and var3. Following is the code snippet :

n = 3;                                         % say

A = [1 2 3;4 5 6;7 8 9];            %say

for i = 1:n

val = genvarname(['var' num2str(i)]);

eval([val '=A(:,i);']);

end

And you are done.. the columns of A get stored in the vectors var1, var2 and var3. Similarly, even block matrices within A can be assigned this way. This is a much more elegant and faster way than doing the same thing via for-loops.

Configure CodeBlocks to compile OpenCV codes

CodeBlocks is one of the IDE(s) that i prefer using due to its simplicity and fast interface. Plus the benefit of having MATLAB like command suggestions. The steps are outlined below:

  • Search the path where opencv is installed in your system.. you can do a :

locate cv.h

  • in my system, this returns : /usr/local/include/opencv/cv.h. Copy the path till the opencv directory, i.e : /usr/local/include/opencv/
  • Now, open CodeBlocks > New Project > (any project type of your choice.. for starters, Console Project is a good beginning) . Now goto,

Project > Build Options > Linker Settings tab

  • Under “Other Linker options” add the following, one below the other:

-lopencv_core
-lopencv_highgui
-lopencv_contrib
-lopencv_ml
-lopencv_legacy
-lopencv_imgproc
-lopencv_video
-lopencv_features2d
-lopencv_calib3d
-lopencv_objdetect
-lopencv_flann

  • Now, in the same window, under “Search directories tab”, add the opencv directory you copied above, i.e. for my system, it’ll be :

/usr/local/include/opencv/

  • Now, Project > Properties > C/C++ Parser options, again add the same directory path.

And you are done !! Enjoy compiling OpenCV codes in CodeBlocks :)

Install OpenCV 2.3 with video support in Fedora 15

Much has changed since OpenCV 2.0.. android support, CUDA support, etc are up and running. So is the change in the method of installing OpenCV. So, i though to quickly jot down the steps to follow for a painless install.

I must add, due to changes in gcc, removal of libv4l support from linux kernel, etc.. OpenCV 2.1 and 2.2 give loads of issues during install. I just couldnt manage installing v2.1, though v2.2 needed few hacks as mentioned in the link : https://code.ros.org/trac/opencv/ticket/324 . So, for people wanting to install v2.2, can follow exactly same steps mentioned below after making the above hack. Note that, even UVC-webcams dont work with v2.2. So, if you’re like me, needing lots of webcam feed for vision-based tasks, its best to avoid v2.2. Moral of the story : Go for v2.3..

1. Install the following :

sudo yum install eigen2-devel, CTL, CTL-devel, OpenEXR_CTL-libs, tbb, yasm, yasm-devel, tbb-devel, OpenEXR CTL-devel, OpenEXR CTL, perl-URI, perl-Compress-Raw-Zlib, perl-Compress-Raw-Bzip2, perl-l0-Compress, libucil-clevel, perl-HTML-Tagset, perl-HTML-Parser, perl-Iibwww-perl, perl-XML-Parser, gstreamer-plugins-base-devel, libsigc++20-devel, glibmm24-devel, libxml++-devel, gstreamermm, xine-lib, libunicapgtk-devel, xine-lib-devel, gstreamermm-devel, python-devel, sip-macros, sip, vamp-plugin-sdk, audacity, sip-devel

sudo yum install libXext-clevel, glib2-devel, libXrender-devel, libXfixes-devel, Iibunicap, freetype-devel, boost-system, fontconfig-devel, libpng-devel, boost-filesystem, boost-serialization, boost-thread, boost-date-time, boost-regex, libXt-devel, libXdamage-devel, libXcomposite-devel, libXcursor-devel, libXrandr-devel, atk-devel, libXinerama-devel, libXxf86vm-devel, libXi-devel, libxml2-devel, blas-devel, libjpeg-turbo-devel, pixman-clevel, cairo-devel, pango-devel, libdrm-devel, mesa-libGL-devel, boost-graph, boost-wave, libucil, boost-signals, boost-python, boost-iostreams, boost-program-options, boost-random, boost-test, boost, mesa-libGLU-devel, ilmbase-devel, libunicapgtk, gdk-pixbuf2-devel, libibverbs, libmlx4, librdmacm, check, check-devel, boost-jam, rarian, rarian-compat, cmake, plpa-libs, numactl, environment-modules, boost-devel, boost-build, OpenEXR-devel, jasper-devel, lapack-devel, libunicap-devel, libtifl-devel, atlas-devel, openmpi, boost-openmpi, ucview, gstreamer-devel, gtk2-devel, jasper, 0penEXR

sudo yum install xorg-x11-proto-devel, libXau-devel, Iibxcb-devel, libX11-devel, libram1394-devel, automake, libogg-devel, libtheora-devel, libvorbis-devel, libdc1394-devel, x264-devel, faac-devel, xvidcore-devel, dirac-devel, gsm-devel, zlib-devel, faad2-devel, speex-devel, lame-devel, orc-compiler, orc-devel, libvdpau, cppunit, libvdpau-devel, schroedinger-devel, dirac, x264, lame, faad2, amrwb-devel, opencore-amr-devel, amrnb, amrnb-devel

(i have tried copying the package names via OCR software and some editing as much as could be possible from the screenshot below)

OR

Install from Add/Remove Programs (PackageKit)

List of Packages to install for OpenCV dependency resolution

2. Now, download and Install FFMPEG

  • Eventhough FFMPEG is at v0.8.. its best to go for v0.7.. thats coz of several dependency issues. Many things like VLC, etc are based on ffmpeg v0.69 code, and v0.8 MAY give lots of issues..
  • Download ffmpeg 0.7 from : http://ffmpeg.org/releases/ffmpeg-0.7.1.tar.bz2
  • extract the above file (say files get extracted to /home/user/ffmpeg)
  • Open terminal and cd to above location.. i.e. : cd /home/user/ffmpeg
  • Now type the following :

./configure –enable-gpl –enable-version3 –enable-nonfree –enable-postproc –enable-libfaac –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libtheora –enable-libvorbis –enable-libxvid –enable-x11grab –enable-swscale –enable-shared

make

sudo make install

  • And you are done.. FFMPEG is ready to be integrated with OpenCV.

3. Download OpenCV 2.3 . Extract to a folder (say /home/user/Opencv-2.3)

  • There still are a few packages of ffmpeg like libavcodec-dev, libavutil-dev, etc which need to be present in /usr/local/ffmpeg/ . But, the above  install of ffmpeg doesnt create this. So, open Add/Remove Programs and install following or install using yum:

sudo yum -y install ffmpeg ffmpeg-devel ffmpeg-libs

  • Now, the requisite libraries are all present in the location OpenCV can find them. Open terminal and cd to the OpenCV folder.. i.e.

cd /home/user/OpenCV-2.3

  • Create a folder called Release

mkdir Release

  • cd to the Release folder and type the following to install OpenCV

cd Release/

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_CUDA=OFF -D WITH_V4L=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_FFMPEG_BUILD=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D WITH_IPP=OFF -D BUILD_EXAMPLES=ON ..

make -j 2

sudo make install

  • Few more steps need to be done to ensure flawless build.

sudo gedit /etc/ld.so.conf.d/opencv.conf

(Type the following and save-close the file) : /usr/local/lib

sudo ldconfig

sudo gedit /etc/bashrc

(Type the following and save-close the file) :

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

And you are done !!! :) OpenCV 2.3 with ffmpeg support is ready to be used on Fedora 15 with full webcam support.. ENJOY !!

NOTE : due to requests for Ubuntu specific steps, i’ll put the changed steps in this post itself in a few days

Fedora 15 Lovelock Released :)

The awesomeness of Fedora 15 is now out in the wild for everyone to experience :) If you are amongst the not-so-crazy ones, who have been playing around with the OS since its Alpha days, well.. its time you experience it !

Head to :

http://fedoraproject.org/get-fedora

And yes, the release banner prepared by the Fedora Design team rocks !! just couldn’t help but posting it here too..

Fedora 15 Lovelock

Fedora 15 Release Banner

yum rocks !!!! :)

With F15 (Fedora 15) in its final stages before release, have been playing around with my F15 system alot more in the past few days.. Recently observed a REAL nice feature in yum, which has made me a BIG BIG fan of it’s..

Had forgotten that i didnt have deltaiso rpm package installed in my system. So, i typed :

applydeltaiso old.iso delta.diso new.iso

and this is the output :

yum installing the package providing the command

Well, as can be seen.. yum found the command in a package, and after permission from the user, installed the required package and the dependencies on its own !!! In my view, its a FANTASTIC feature.. the user doesnt have to worry which package provides the command..

Am not sure if this was there in earlier releases of yum, but its a great great feature :) Glad to have discovered it finally, in case the feature existed since before.. and yes, kudos to the yum team !!

Installing WIndows using VirtualBox in Linux

Found a really nice article on the procedure to be followed for installing and performing certain post install steps. The site link is given below:

http://www.linuxjournal.com/content/using-windows-xp-virtualbox-linux

Multiple commands from a single Keyboard Shortcut

After doing the keyboard binding, i wanted to experiment further and try to run multiple commands from the single keyboard shortcut. Basically, the inspiration was managing the OLD style eject operation found in Gnome, wherein the notification daemon used to show : “Ejecting Media Drive” followed by the eject operation.

After alot of tricks (even trying putting semi-colon between commands in the keyboard shortcut assigning window, which grandly failed !!), i zeroed in onto creating a simple bash script :

#!/bin/bash
notify-send -i /usr/share/icons/gnome-colors-common/scalable/notifications/notification-device-eject.svg “Eject” “Ejecting Media Device”
eject

NOTE THAT you need the libnotify-cil or libnotify-cli package in your distro to make the above shown notification happen.

Thats it. Save the file (name = script.sh) in your homefolder somwehere, say : /home/laptop/Public/

Now, perform the following steps:

  1. in your terminal, type : chmod +x /home/laptop/Public/script.sh
  2. Now, open Keyboard Shortcut Window from preferences menu
  3. Click on ADD button
  4. Name the entry as Eject CD Drive
  5. Enter the command as : /home/laptop/Public/script.sh
  6. Click OK
  7. Click on extreme right of the new entry you  just made
  8. Specify your keyboard binding for this entry.

And its done.. When you press the key combinations you just specified, it’ll show up the notification as shown in the image above. ENJOY !!!

Follow

Get every new post delivered to your Inbox.