Archive for ‘Opensource’ Category
Browse:
Opensource »
Subcategories:

Stream your Windows desktop using ffmpeg

datePosted on 10:26, November 3rd, 2011 by Many Ayromlou

I’ve already covered how to do this with vlc a while back in parts 1 followed by part 2. I just found out that something very similar in results can be done with ffmpeg. ffmpeg has recently added support for directshow filters which now allows one to capture the screen and stream and/or save it. Here is how you can do this:

1.) Grab a copy of the Screen Capture DirectShow source filter from Unreal Streaming Technologies. It’s about half way down that page. They have both the UScreenCapture X86 Edition and the X64 Edition (depending on your OS installation). I used the 64 bit filter on a Windows 7 64 bit installation.

2.) Install the filter and make sure you make the following changes to your windows registry using regedit. The default frame rate for UScreenCapture filter is 10 f/s and we need to boost this to 30 frames/sec. You need to find the key HKLM\SOFTWARE\UNREAL\Live\UScreenCapture and insert a DWORD value of 30 for FrameRate (You have to create FrameRate, it does not exist by default). Once you’ve done the registry tweak, reboot.

3.) Install the latest greatest version of ffmpeg for your windows version from Zeranoe. I grabbed the 64 bit Static build since I didn’t want to deal with libraries and such. Extract it and stick it somewhere on your hard drive. Remember the path to this folder since we will need it later.

4.) Open a command line window and cd to the directory where you extracted ffmpeg into, find the bin directory and cd into it. This is were the ffmpeg executable resides. In my case (I extracted the ffmpeg files into “Program Files” directory) it is C:\Program Files\ffmpeg-git-059707e-win64-static\bin.

5.) If you’ve made it this far, hand in there, we’re almost home. Now you need to issue the command that gets the screen streaming going. But first we need to find out the name of the Screen filter device. So issue the following command:

ffmpeg -list_devices true -f dshow -i dummy

In the output look for a device called “UScreenCapture“. Hopefully if everything is working with the directshow filter you have a entry in the list. That’s the name of our device that we need to pass onto ffmpeg. While you’re there also look for your audio device entry as well. Mine was the truncated word “Stereo Mix (Realtek High Defini” (Yes mine was missing the end of that line). Jot that down somewhere as well. I will show you how to get audio going as well.

6.) So first step is to get video going. Assuming you have a “UScreenCapture” device (You could use another directshow filter if you like, this will work with most of them. I just used the Unreal filter for the heck of it), here is the command to start encoding and sending video:

ffmpeg -f dshow  -i video="UScreenCapture"  -r 30 -vcodec mpeg4 -q 12 -f mpegts udp://aaa.bbb.ccc.ddd:6666?pkt_size=188?buffer_size=65535
  • -f dshow specifies that you’re going to be using a directshow device as your input.
  • -i video=”UScreenCapture” is the name of the input directshow device which we picked up in step 5.
  • -r 30 is the frame rate.
  • -vcodec mpeg4 is our video codec of choice.
  • -q 12 is a quality measure for the encoding process (1 is the best and 30 the worst). We’re doing VBR encoding so this measures the compression ratio vs. picture quality.
  • -f mpegts is our output filetype. In this case mpeg-2 transport stream. Yes, we’re encapsulating mpeg4 video inside a mpeg-2 transport stream…..why?….google it.
  • udp://aaa.bbb.ccc.ddd:6666?pkt_size=188?buffer_size=65535 this last bit specifies the address and port number of the recipient machine (aaa.bbb.ccc.ddd is the ip address of that machine and 6666 is my arbitrary port number). We’re also instructing ffmpeg to create smaller 188 byte size udp packets (which is the size of the transport stream packets) to decrease latency and our buffer size is 64kb.

7.) On the receiving machine you should be able to use vlc, ffmpeg or mplayer to catch the stream. In vlc simply open the Network stream rtp://@:6666 , in ffmpeg you can use the command ffplay -i udp://:6666 or using mplayer you can issue the command mplayer -framedrop -double udp://:6666 .

8.) Now to optionally add sound to the whole thing we can use this command on the encoding machine (instead of step 6). You need to know the device name for your sound card and you probably want to turn the volume down (at least initially) on the decoding machine.

ffmpeg -f dshow  -i video="UScreenCapture" -f dshow -i audio="Stereo Mix (Realtek High Defini" -r 30 -vcodec mpeg4 -q 20 -acodec libmp3lame -ab 128k -f mpegts udp://141.117.224.74:6666?pkt_size=188?buffer_size=65535
  • -f dshow specifies that you’re going to be using a directshow device as your input (VIDEO).
  • -i video=”UScreenCapture” is the name of the input directshow video device which we picked up in step 5.
  • -f dshow specifies that you’re going to be using a directshow device as your input (AUDIO).
  • -i audio=”Stereo Mix (Realtek High Defini” is the name of the input directshow audio device which we picked up in step 5.
  • -r 30 is the frame rate.
  • -vcodec mpeg4 is our video codec of choice.
  • -q 20 is a quality measure for the encoding process (1 is the best and 30 the worst). We’re doing VBR encoding so this measures the compression ratio vs. picture quality. I went with 20 instead of 12 from step 6 since the audio encoding slows the machine down a bit.
  • -acodec libmp3lame is our video codec of choice
  • -f mpegts is our output filetype. In this case mpeg-2 transport stream. Yes, we’re encapsulating mpeg4 video inside a mpeg-2 transport stream…..why?….google it.
  • udp://aaa.bbb.ccc.ddd:6666?pkt_size=188?buffer_size=65535 this last bit specifies the address and port number of the recipient machine (aaa.bbb.ccc.ddd is the ip address of that machine and 6666 is my arbitrary port number). We’re also instructing ffmpeg to create smaller 188 byte size udp packets (which is the size of the transport stream packets) to decrease latency and our buffer size is 64kb.
Share

Movist…..will it be the next VLC for mac….

datePosted on 13:51, February 5th, 2010 by Many Ayromlou

The answer to that is maybe, we’ll see. But all that aside if you’re interested in a minimalistic video player that can handle more codecs than VLC and is generally faster then give Movist a try.

The unique thing about the player is that it allows you to switch codec engines between ffmpeg and quicktime based on file extensions. Oh and did I say it’s FREE aswell :-).

Share

OpenShot Video Editor 1.0 released…..iMovie for Linux is here.

datePosted on 13:24, January 14th, 2010 by Many Ayromlou

For those of you who don’t know OpenShot Video Editor(TM) is an open-source program that creates, modifies, and edits video files. OpenShot provides extensive editing and compositing features, and has been designed as a practical tool for working with high-definition video including HDV and AVCHD.

Jonathan Thomas and crew have reached their 1.0 milestone (congrats :-)). The program is rock solid and is running beautifully on my Ubuntu 9.10 installation.

OpenShot’s Features include:

  • Support for many video, audio, and image formats (based on FFmpeg)
  • Gnome integration (drag and drop support)
  • Multiple tracks
  • Clip resizing, trimming, snapping, and cutting
  • Video transitions with real-time previews
  • Compositing, image overlays, watermarks
  • Title templates, title creation
  • SVG friendly, to create and include titles and credits
  • Scrolling motion picture credits
  • Solid color clips (including alpha compositing)
  • Support for Rotoscoping / Image sequences
  • Drag and drop timeline
  • Frame stepping, key-mappings: J,K, and L keys
  • Video encoding (based on FFmpeg)
  • Key Frame animation
  • Digital zooming of video clips
  • Speed changes on clips (slow motion etc)
  • Custom transition lumas and masks
  • Re-sizing of clips (frame size)
  • Audio mixing and editing
  • Presets for key frame animations and layout
  • Ken Burns effect (making video by panning over an image)
  • Digital video effects, including brightness, gamma, hue, greyscale, chroma key (bluescreen/greenscreen), and over 20 other video effects.
 There are 4 ways to install OpenShot: LiveDVD, PPA, DEB Installer, and the Build Wizard. Grab it here.
Share

Ninite: Number 1 application you need in Windows…..

datePosted on 11:47, October 23rd, 2009 by Many Ayromlou

There are a lot of fantastic free software packages out there for the PC if you’re running windows. VLC, Firefox come to mind. The problem is that it takes a long time to install all of them on your PC. You know the routine, click, wait for download, double click, next, next, next, etc……Well, why? Head over to Ninite’s website, choose the applications you want and let them create a custom “Meta Installer” for all the applications in one package. Run the installer and wham, you got all those free/opensource apps downloaded and installed on your machine in one shot, with minimal clickage :-). No sign-up required, Free for personal use, Just in time for Windows 7 Upgrade (or potentially downgrade). Now if only someone would make something like this on OSX, so I can install Final Cut Pro Studio without having grass grow under my seat, that would be nice :-).

Share

Title says it all…..head over to TechPosters (kinda slow right now) and snag your favourite cheat sheet/reference card. There are also more of this kinda stuff over at Cheat-Sheets.org as well.

Share

Apertus: Open Source DCinema……

datePosted on 16:22, August 7th, 2009 by Many Ayromlou

Yep, those crazy open source hackers over at dvinfo.net have done it again. You thought the RED camera brought about a revolution in dcinema, well, you ain’t seen nothing yet. Apertus is using the Elphel 353, free software and open hardware camera. The Elphel Camera which this entire project is based on is basically an excellent security camera that can do some real magic. The camera uses an Aptina CMOS bayer-pattern sensor with an optical format of 1/2.5″ (5.70mm x 4.28mm) and a native resolution of 2592×1944 (5 Megapixels). It features a 12 bit ADC and supports: region of interest, on-chip binning and decimation. Aptina claims that the chip has 70db of dynamic range at full resolution and 76db when using 2×2 binning. The camera has a standard C-mount but ships with an adapter ring that allows to mount CS-lenses as well.

The recording resolution can be freely adjusted to anything starting from 16×16 to 2592×1944 in 16 pixel steps. This includes Apertus AMAX (2224×1251), Apertus CIMAX (2592×1120), 2K (2048 × 1536), Full HD (1920×1080), HD (1280×720) and of course all lower resolution SD formats like DV PAL, DV NTSC, etc.

Standard Resolution Record Mode max. FPS
Apertus AMAX 16:9 2224×1251 JP4 RAW 24
Apertus CIMAX 2.35:1 2592×1120 JP4 RAW 24.2
Full HD (1080p) 1920×1088 color 25.2
Full HD (1080p) 1920×1088 JP4 RAW 30.9
2K 2048×1088 color 23.9
2K 2048×1088 JP4 RAW 29.5
HD (720p) 1280×720 (2×2 binning) color 46.2
HD (720p) 1280×720 (2×2 binning) JP4 RAW 46.2
HD (720p) 1280×720 color 57.9
HD (720p) 1280×720 JP4 RAW 60
NTSC DV 640×480 color / JP4 RAW 126
NTSC DV 640×480 (3×3 binning) color / JP4 RAW 82
NTSC 16:9 854×480 color / JP4 RAW 110
PAL DV 720×576 color / JP4 RAW 100
PAL DV 720×576 (3×3 binning) color / JP4 RAW 66
PAL DV 16:9 1024×576 color / JP4 RAW 84

The lower the resolution the higher the maximal possible framerate. At the full sensor size (5 million pixels or 5 Megapixels) the maximal frame rate is 10 fps in normal color mode and 15 fps in JP4 RAW mode. JP4 achieves higher framerates in general as some camera internal calculations are skipped and need to be applied later in postproduction (like debayering/demosaicing).

The RAW recording mode in Apertus is called JP4 RAW. Because certain in-camera compression steps can be skipped JP4 RAW allows higher recording speed resulting in more fps. JP4 RAW requires postprocessing (DNG Converter) but in return offers the highest possible image quality.

The following connectors are available on the camera body:

  • SATA: Can be used to connect any external SATA device that is supported under Linux (external harddrives, raids, etc.)
  • Ethernet: 100MBit Network with POE (48V)
  • USB: USB 1.1 with 5V power supply
  • IDE: Used to connect internal HDD
  • RS232: Access to Console and debug output

The camera also supports the following recording media:

  • Optional internal IDE 1.8″ HDD
  • 2 internal CF Card Slots
  • external SATA connector to connect any SATA device (Linux support required)

And if that’s not enough for you there is a extra bonus that comes from the ability of the camera to shoot Full HD in portrait (upright) mode. Upright screens are basically 1080p screens mounted sideways (portrait mode). This type of mounting is becoming increasingly more popular for events, exhibitions and advertising. If you want to spare yourself the hassle of building a right to mount the camera 90 degrees rotated you can whip out your Apertus rig and just start recording. This will give you a 1088×1020 image that’s ready for portrait playback.

Share

So after yesterdays rant, I went back and figured out how to install the Cacti monitoring software (OSS, Free) onto a Ubuntu 9.04 “Jaunty Jackalope” Desktop installation. This guide uses packages only, no compiling, no Makefiles or anything like that…..You should be able to just follow this and get a fully functioning Cacti installation in about 30 minutes. Here are the steps:

  1. install ubuntu 9.04 (“Jaunty Jackalope“) Desktop Edition on your machine
  2. Login, open a Shell window and install ubuntu LAMP (Linux/Apache/MySQL/PHP) server stack on your machine
    “sudo tasksel install lamp-server”.
    Note: Make sure you remember the password for “root” user in mysql Database, write it down somewhere, we will need it later on.
  3. Get a superuser shell started since it will make for less typing.
    “sudo -i”
    followed by your password. Be carefull from now on, you’re ROOT and can literally destroy your system if you issue the wrong command. Follow along by typing the commands in the rest of this document and answering the prompts where appropriate.
  4. Issue:
    “apt-get install rrdtool snmp php5-snmp php5 php5-gd”
    This will get all of the prereqs installed on your system. Answer “yes” when prompted for additional packages. 
  5. Issue:
    “apt-get install cacti-cactid”
    This will get cacti and cacti server installed. Again answer “yes” when prompted for additional packages.
  6. You’ll be presented with a bunch of ANSI screens that ask for information or give you choices to configure “libphp-adodb” package. Follow as per below:
    • Click “Okay” on php.ini update path (screen 1).
    • Choose “Apache 2″ from the pull down on next screen (screen 2).
    • Click “Okay” on cacti and spine configuration screen (screen 3).
    • At this point some config scripts will run and you’ll see a bunch on jiberish on the screen. Let it go, don’t touch nothing.
    • Click “yes” on the dbconfig-common screen and provide the password from step 2. (above) for the mysql “root” user (screen 4).
    • Now you’re prompted to choose a password for a new mysql user known as “cacti”. I used the same password as “root” user since my system is single user only. You will need to confirm the password on the next screen (screen 5,6).
    • Almost there……..
  7. Now the hard part is over. Start your browser and point it at http://localhost/cacti — assuming you’re running the browser on the cacti machine — or the appropriate IP address instead of localhost.
  8. Click “Next” on the first screen (might want to read it too).
  9. Select “New Install” on screen 2 and Click “Next”
  10. On the next screen (Path Check screen) make sure everything is found and make 100% sure to select “RRDTool 1.2.x” from the RRDTool utility version pull down. Click “Finish” when you’re done.
  11. You’ll see the login screen. Use Username “admin” and Password “admin” to login. On the next screen you’re forced to change the password for user admin. This is a good thing. Change the password to something complicated and easy to remember (does that exist?). Click “Save”.
  12. Make sure under Configuration Settings/Paths that “Spine Poller file path” is correctly set to “/usr/sbin/spine”, and its found.
  13. Make sure under Configuration Settings/Poller you select “Poller type” and set it to “spine” and Click “Save”. You’re done……Please RTFM for more Cacti info (or come back here and you might potentially find another episode of my ramblings). Have Fun!!
Share

Beagleboard is your friend…..

datePosted on 16:52, May 24th, 2009 by Many Ayromlou

The USB-powered Beagle Board is a low-cost, fan-less single board computer utilizing Texas Instruments’ OMAP3530 application processor that unleashes laptop-like performance and expansion without the bulk, expense, or noise of typical desktop machines.

Beagle Board is based on an OMAP3530 application processor featuring an ARM® Cortex™-A8 running at up to 600MHz and delivering over 1,200 Dhrystone MIPS of performance via superscalar operation with highly accurate branch prediction and 256KB of L2 cache. Focal to Beagle Board experience is the high-speed USB 2.0 on-the-go (OTG) port that can be utilized to provide power to the board or to deliver highly flexible expansion. Standard PC peripherals can be connected to Beagle Board using the USB with a mini-A to standard-A cable adapter, DVI-D using an HDMI to DVI-D adapter, or through the MMC/SD/SDIO connector enabling a complete desktop experience. The picture below should give you a good idea of it’s size beside the tiny Pico Projector.

Hardware Specifications are as follows:

  • OMAP3530 applications processor featuring the ARM® Cortex™-A8
  • 128MB low-power DDR RAM
  • 256MB NAND flash
  • USB 2.0 high-speed on-the-go port
  • DVI-D output
  • NTSC/PAL TV via S-Video output
  • 6-in-one 8-bit MMC+/SD/SDIO connection
  • Stereo audio in/output
  • JTAG header
  • I2S, I2S, SPI, MMC/SD expansion header
  • Power via USB or alternate jack

Looks very nice and complete, a good alternative to Gumstix Avero stuff we covered earlier . And did I mention it’s only $149. Perfect for your next project.

Share

Could this be the Google Tablet…..

datePosted on 16:25, May 24th, 2009 by Many Ayromlou

Not too sure, but the Zoom OMAP34x-II Mobile Development Platform looks too “finished/flashy” to be a Mobile Development Platform (MDP). I guess time will tell……For now we can all drool over the pics….and btw, if you have $1150, you can beat the crowd and own one today.

Out of the box features of the Zoom OMAP34x-II MDP :

  • 4.1″ WVGA multi-touch display with a QWERTY keypad in a landscape, handheld form factor
  • High performance OMAP3430 applications processor that supports up to 720p HD video encode/decode
  • Support for popular leading mobile operating systems, including Android Mobile Platform, Linux, LiMo, Symbian OS and Microsoft(r) Windows(r) Mobile
  • Wireless connectivity technology from TI, including WiLinkTM 6.0 (WL1271), a single chip with Wi-Fi(r), Bluetooth(r) and FM functionality; and NaviLinkTM GPS functionality
  • 8-megapixel camera sensor
  • Optional 3G modem solution, as well as flexibility to support any third party modem through an extension card
  • An optional DLP Pico projection module will be available, taking mobile content from “tiny screen” viewing to a shareable “big screen” format
The DLP Pico projector is a interesting critter. It is literally tiny. The above picture gives you an idea of it’s size compared to the power adapter. You can pick one up for about $350 at Digi-Key.com ’s online store. The tech specs for this little guy are:

  • Resolution: 0.17-inch HVGA (320×480 device creating a 640×480 projection)
  • Brightness: 7 lumens
  • Contrast ratio: 1000:1
  • Throw ratio: 1.89
  • Processor: MSP430 microcontroller with download port
  • Light source: Solid-state 3 LED
  • Video input: DVI-D 888RGB, VGA 60 Hz
  • Dimensions: 44.8 x 67.4 x 14.2 mm3
Share

Surveyor SRV-1 Blackfin Robot

datePosted on 15:51, May 24th, 2009 by Many Ayromlou

Wow, this little guy is cool. Check out Surveyor Corporation’s Open Source Wireless Mobile Robot . Very neat little package for just $475. While there, you might also want to check out YARB 1.0 (Yet Another Robotic Blimp) robot, also pretty neat. Here is a bit of a description according to their site:

Designed for research, education, and exploration, Surveyor’s SRV-1 internet-controlled robot integrates a 1000MIPS 500MHz Analog Devices Blackfin BF537 processor, a digital video camera with resolution from 160×128 to 1280×1024 pixels, laser pointer ranging, and WLAN 802.11b/g networking on a quad-motor tracked mobile robotic base.

Operating as a remotely-controlled webcam or a self-navigating autonomous robot, the SRV-1 can run onboard interpreted C programs or user-modified firmware, or be remotely managed from a Windows, Mac OS/X or Linux base station with Python or Java-based console software. The Java-based console software includes a built-in web server to monitor and control the SRV-1 via a web browser from anywhere in the world, as well as archive video feeds on demand or on a scheduled basis. Additional software support for the SRV-1 is also available by way of Microsoft Robotics Studio, Cyberbotic’s Webots, and RoboRealm machine vision software.

Features

  • Open Source design with full access to source code (GPL) and schematics
  • Robot is fully programmable for autonomous operation
  • Extensive software support through 3rd party applications
  • Teleoperate mode to drive robot around via console software or remotely via web browser
  • Host software has built-in web server and video archiving
  • Robot can run programs written in interpreted C and stored in onboard Flash
  • Wireless remote control or viewing up to 100m indoors and 1000m outdoors (line of sight)
  • Robot can be controlled from a terminal/console for easy testing
  • Linux 2.6 support as well as “bare metal” programming with GNU bfin-elf-gcc

Hardware

  • Processor: 1000mips 500MHz Analog Devices Blackfin BF537, 32MB SDRAM, 4MB Flash, JTAG
  • Camera: Omnivision OV9655 1.3 megapixel 160×128 to 1280×1024 resolution
  • Robot Radio: Lantronix Matchport 802.11b/g WiFi
  • Range: 100m indoors, 1000m line-of-site
  • Sensors: 2 laser pointers for ranging
  • Drive: Tank-style treads with differential drive via four precision DC gearmotors (100:1 gear reduction)
  • Speed: 20cm – 40cm per second (approx 1 foot/sec or .5 mile/hour)
  • Chassis: Machined Aluminum
  • Dimensions: 120mm long x 100mm wide x 80mm tall (5″ x 4″ x 3″)
  • Weight: 360gm (12oz)
  • Power: 7.4V 2000mAH Li-poly battery pack – 4+ hours per charge
  • Charger: 100-240VAC 50/60Hz (US plug)

Software

  • Robot Firmware: easily updated, written in C language under GPL Open Source, compiled with GNU bfin-elf-gcc and bfin-uclinux-gcc toolchains
  • Onboard User Programming: interpreter for C language with special robot-specific commands are provided for running user programs from onboard Flash memory
  • Development Tools: GNU toolchains via http://blackfin.uclinux.org
  • Console Software: Java based application, runs on Windows, MAC, Linux. WebcamSat web server module built into console software, allows multiple simultaneous remote viewers via Internet
  • Robot Control Protocol: Published here. Easily used from other applications
  • Third-party Software Support:
    • RoboRealm – http://www.roborealm.com/help/Surveyor_SRV1.php – The SRV-1 can now be directly controlled from RoboRealm, a very popular Windows-based machine vision software package for robots. The RoboRealm extensions for SRV-1 allow creation of scripts that combine image processing on live video feeds from the robot, e.g. color filtering, blob detection/tracking, edge detection/outlining and feature extraction, with decision processing and robot motion control, making it easy to create behaviors such as object location and tracking, obstacle avoidance, motion detection, notification, etc, with a web interface, and control can be scripted from C/C++, Python, Java, C#, Lisp, Visual Basic, WScript and COM through the RoboRealm API.
    • Microsoft Robotics Studio – http://www.surveyor.com/MSRS.html – Drivers for the SRV-1 in Microsoft Robotics Studio are now available. MSRS is a Windows-based environment for academic, hobbyist and commercial developers to create robotics applications across a wide variety of hardware. Key features and benefits include: end-to-end robotics development platform, lightweight services-oriented runtime, and a scalable / extensible platform.
Yeah, now I know what I’ll be doing with my next 500 bucks :-).
Share

Build your own smartphone…..from scratch.

datePosted on 23:13, May 23rd, 2009 by Many Ayromlou

 Yep, you can do it now…..The open source hacker community GizmoForYou is shipping a Linux hardware/software kit for building a modular touchscreen smartphone. Using the OMAP35x-based Gumstix Overo Earth single-board computer (SBC), the Flow phone offers numerous customization modules including GPS, 3.5G cellular, Bluetooth, WiFi, and a camera. At around $1300 for the complete kitchen sink version, it’s not exactly cheap, but since they offer multiple choices for each component, you can pick and choose what you like to have inside your smartphone. Really neat stuff.

For those of you who are not tuned into Gumstix, the Overo line is a new line of Computer-on-Module devices designed by Gumstix based on TI’s OMAP Processor. Overo Earth comes with  the following specs:

Processor: OMAP 3503 Application Processor with ARM Cortex-A8 CPU
Clock(MHz): 600 MHz
Performance: Up to 1200 Dhrystone MIPS
Memory: 256MB RAM , 256MB Flash
Features:

  • Pin-out compatible with future OMAP 35x-based Overo motherboards
  • on-board microSD card slot
  • I2C, PWM lines (6), A/D (6), 1-wire, UART, SPI, Camera in, Extra MMC lines.
  • Headset, Microphone, backup battery,
  • USB OTG signals, USB HS Host

Connections:

  • (2) 70-pin AVX connectors
  • (1) 27-pin flex ribbon connector

Size: 17mm x 58mm x 4.2mm (0.67 in. x 2.28 in. 0.16 in.)
Expansion: Expansion boards for Overo motherboards. Or, custom design from open specifications.

The core of the Flow phone is the Flow motherboard, which is designed to integrate the separately available Overo Earth module. You can also use the more expensive Overo Water, Air or Fire modules. Other modules attach to the motherboard, including a 3.7-inch 640 x 480 Sharp LS037V7DW01 touchscreen LCD and Flow Sharp LCD module.

Connectivity modules include GPS, USB, and a choice between a plain GSM cellular module and a HSDPA-ready 3.5G/GPS/GSM/GPRS module. (WiFi and Bluetooth are already supplied by the Overo SBC.) Additional options include a 1GB MicroSD card, camera, power supply, battery, and enclosure, with various options available on several of the modules. Flow motherboard features include:

  • 2 x 70 pin connectors for the Overo module from Gumstix
  • 80-pin connector for the GSM, GPS, and 3G modules
  • Stereo amplifiers
  • 2 x speakers and GSM audio amplifier for speakers
  • Microphone and GSM preamp for Mic
  • PIC16LF877A UI Init (with Bootloader preloaded)
  • 2 x general-purpose buttons linked to the UI Unit
  • Orientation sensor
  • Light sensor
  • Level translation for GSM serial connections
  • 3G USB HS power supply
  • Luxeon 1W LED for the camera flash features
  • Dual SIM/MicroSD slot (experimental)
  • Camera connector and camera power management
  • Power management circuits fully controllable by the UI unit
  • Additional pins for connecting external power sources
  • Dimensions — 3.0 x 2.6 inches (76 x 65mm)
  • Operating system — Linux

GizmoForYou does not say much about software, but there are a growing number of Linux development platforms supporting the Overo Earth and OMAP35x platforms, and according to a project member, the group is working on an Android implementation.

Share

How to mount your Journalized HFS+ disk in Linux….

datePosted on 20:41, May 23rd, 2009 by Many Ayromlou

This is something that people who deal with OSX and Linux come across everyday. Yes you can format your USB stick or removable HD using FAT32. The problem is that FAT32 does not support large sized files which can cause problems. So how do you solve this…..Easy. Attach the Journalized HFS+ disk to your MAC and startup disk utility. Inside disk utility find the disk in question and click on the partition(s) while holding down the “ALT” key. Keep holding the key down and go to the File menu and choose “Disable Journaling” (command-J). Eject the disk, move it over to your linux machine and hook it up. Linux can now read and write to the disk. Once you’re done, move the disk back to the apple machine and after selecting it in disk utility click on “Enable Journaling” button. Done.

Share

This used to be a pain in the butt. Lots of manual apt-get lines and config edits to get it to work. Weŕe talking about installing the LAMP stack onto a preexisting Ubuntu Desktop Edition installation. I used to do this backwards in the old days by installing the Server edition first (with LAMP) and then getting the graphical desktop goodies installed on top of that. That method still works, but I found out that LAMP stack install on a Desktop edition is a simple one command affair. As of the 7.04 release, the Ubuntu base system includes Tasksel. You can install LAMP using tasksel.
sudo tasksel install lamp-server

Share

Moblin OS rocks…..

datePosted on 21:49, May 19th, 2009 by Many Ayromlou

Heard of Moblin yet….Intel’s foray into designing a Linux distro. Moblin is an open source project focused on building a Linux-based platform optimized for the next generation of mobile devices including Netbooks, Mobile Internet Devices, and In-vehicle infotainment systems. I came across the promo video below and I have to say I’m impressed. I’m downloading the beta image file right now to give it a try on my brand new Aspire One D150. More to come soon…..

Share

I ran into this a couple of weeks ago and it’s been driving me bonkers. I finally figured out what’s wrong. I was just trying to get my feet wet using the Sun Grid Engine and figured I follow their instruction page and try out the example shell script and submit it using “qsub” command. I was doing this on the frontend machine that’s been configured properly as a ROCKS cluster frontend. This was not working and the error I kept getting was “Unable to run job: denied: host “name_of_computer” is no submit host. Exiting.”

After googling around for a couple of days I found the answer (atleast the answer in my case). Issuing the following command solved my problem:

qconf -as frontend-name

Apparently the SGE roll does not setup the frontend node as a “submit host” during install. After this (the above command) everything seems to work properly. Now I can do “qstat -f” and “qsub”.

Share

Okay so I’ve been playing around with openfiler for the past couple of months. We’re trying to setup a Student homedirectory NAS device and have a mirror machine that would take over if our primary dies. Our machines are hand built 13-TB NAS servers using 16 x 1TB Seagate disks and a 16 channel sata2 raid controller from 3Ware. There are several problems that one needs to overcome in this type of setup so I will try to cover it, bit by bit as I finish confirming it at work. As I said we’re using a Super Micro case and motherboard (Dual Quadcore Xeon) and we’ve stuffed a 16 channel 3ware 9650 controller in there. The first issue we had was with hardware and the fact that we had some screwy new firmware on the controller that was not working nicely with our 16 x 1TB seagate drives. We downgraded the firmware and got the machine to post. Then we created a (roughly) 14 TB container in raid-6 mode (16 drives, less 2). We further devided up the space into a 20GB boot partition (using the bios setting in 3ware bios) and a giant (rougly) 13TB partition that will hold our student data. The 20 GB partition will later on hold our swap space and non essential (frequently updated) folders under /var (lock, log, etc.)

We have physically 2 separate machines that are exact copies of each other hardware-wise. The plan initiallly was to use DRBD and heartbeat service to create a High availability NAS cluster, but since we are tying to authenticate (for smb) with our Windows system, we could not get that configuration working (and frankly I still don’t trust DRBD, as good as it is). So we decided to create two USB sticks images. One for master and another for slave. The master will be a machine enrolled into our Active directory domain and the slave will be a passive (private) rsync server. The master USB image is configured with all the AD stuff and two interfaces. One interface serves as the NAS and another runs rsync against our slave/rsync server. When/If the master fails (ie: motherboard failure) beyond recognition, we simply plug the master USB stick into our slave machine and reboot it. Since the machines are exact copies of one another the (old slave) will now be master and once the (old) master is fixed, it will become the new slave/rsync server. Real simple.

So here is Chapter one – How do you get Openfiler 2.3 to boot off a USB stick:

Before you start you’ll need the following:

  1. Four USB Sticks 2GB+ that are the same brand, size.
  2. Openfiler 2.3 install CD
  3. A non openfiler rescue disk (I used a Ubuntu LiveCD) used to fix (reinstall) grub on the USB stick.

Insert your USB stick, and boot from the OpenFiler 2.3 installation CD. At the boot prompt, type expert (for text mode type expert text, I used graphical mode). Manually configure your partitions. I just had one 2Gb partition (ext2) on /. I used ext2 since it has no journal and won’t constantly write to the USB stick. No Swap partition at this point. After the install I noticed that something between 600 and 700 Mb was used for the system, so you might be able to use about 200-300Mb for swap if really needed (however, I doubt the use for a swap partition, as USB storage is really slow). The installer will breeze through to the end. Note that it is realllyyy slow. It took more than an hour on my config. Reboot at the end and get the OF2.3 CD booting again in rescue mode by typing “linux rescue” at the prompt. Once you’re at the prompt mount the USB stick manually (fdisk -l might help as it will print out info about all the disks). My USB stick was /dev/sdc, hence the commands below:

mount /dev/sdc1 /mnt/source
chroot /mnt/source

Now you’ve got the partition mounted and your shell chrooted to the root of the USB stick. We next copy the initrd on the USB stick into a temporary directory (on the stick) and uncompress it so we can modify it. You need to do this so that grub can initialize the bootloader ram disk off the USB stick (ie: makes OF installation bootable from USB).

cp /boot/initrd-2.X.X.img /tmp/initrd.gz
gunzip /tmp/initrd.gz
mkdir /tmp/a
cd /tmp/a
cpio -i < /tmp/initrd

At this point we need to edit the “init” file (text file containing kernel module listings that are required during boot). I used vi to do this, not sure if there is another editor available during rescue mode. Find the line containing “insmod /lib/sd_mod.ko” and insert the following snippet under it:

insmod /lib/sr_mod.ko
insmod /lib/ehci-hcd.ko
insmod /lib/uhci-hcd.ko
sleep 5
insmod /lib/usb-storage.ko
sleep 8

Save the file and follow along with the following commands to physically copy the appropriate kernel modules to the temp directory.

cd /lib/modules/insert-kernel-folder-here-or-just-use-TAB-key/kernel/drivers
cp usb/storage/usb-storage.ko /tmp/a/lib
cp usb/host/ehci-hcd.ko /tmp/a/lib
cp usb/host/uhci-hcd.ko /tmp/a/lib
cp scsi/sr_mod.ko /tmp/a/lib
cd /tmp/a
find . | cpio -c -o | gzip -9 > /boot/usbinitrd.img

IMPORTANT – Now adjust grub config (/boot/grub/grub.conf) to reflect the change to initrd filename. You should also repeat this on kernel upgrades (but then again, never touch a working system ;)).
Reboot.

More than likely it’s a no go, since the installer did not install grub properly. Now take out your Ubuntu (or other favourite rescue CD) out and boot from it. Don’t use the OF2.3 CD in rescue mode…..IT DOES NOT WORK. Once booted, mount the USB stick on the system and use the following commands to re-install grub:

mount /dev/sdc1 /mnt/source
grub-install --root-directory=/mnt/source /dev/sdc

Reboot and you should be good to go (you will get a couple of Errors during boot about modules already loaded stuff…..ignore). At some point you do want to move some of those auxiliary directories (/tmp/ /var/log /var/lock and others) and swap file off the stick and onto the 20GB portion of our raid-6 we prepped earlier on. Below you find the fdisk -l listing of that “logical disk” (/dev/sdb in our system):

Disk /dev/sdb: 21.4 GB, 21474835968 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 609 4891761 83 Linux
/dev/sdb2 610 621 96390 83 Linux
/dev/sdb3 622 671 401625 83 Linux
/dev/sdb4 672 2610 15575017+ 5 Extended
/dev/sdb5 672 673 16033+ 83 Linux
/dev/sdb6 674 2610 15558921 82 Linux swap / Solaris

here is a breakdown of what goes where (/dev/sdb6 is obviously swap which was prepared with “mkswap” command):

tmpfs /tmp tmpfs defaults,noatime 0 0
tmpfs /var/tmp tmpfs defaults,noatime 0 0
/dev/sdb1 /var/log ext2 defaults 1 1
/dev/sdb2 /var/run ext2 defaults 1 1
/dev/sdb3 /var/cache ext2 defaults 1 1
/dev/sdb5 /var/lock ext2 defaults 1 1
/dev/sdb6 swap swap defaults 0 0

You need to make the above changes to your USB stick’s /etc/fstab, but before rebooting you need to use “cp -a” command to copy all the folders from the appropriate location on the USB stick to the above partitions (by mounting the partitions temporarily/one-at-a-time), just to make sure no process would go crazy if it didn’t find the lock directory (or cache, run, etc.).

Next we want to make four copies of this stick. You can use a Mac or Win (using rawrite) or better yet Linux. It’s important that the stick your copying is not booted. Use the Ubuntu/whatever CD you used ealier and boot it into rescue mode. Go to command line and use “dd” command to create three more copies of the stick you just preped.

Two copies (one for safe keeping) will become your Master USB sticks to boot the machine in Master mode (as described earlier in this article). The other two copies (one for safe keeping) will become your Slave sticks.

NOTES:

These notes have nothing to do with the installation. I’m just putting them down here for safe keeping. Only use these if you’re in trouble.

- If you want to create a “Home Share” and you don’t get the “Make Home Share” button on the interface, something has gone wrong with one of the xml config files. No worries, find and edit the file /opt/openfiler/etc/homespath.xml . Inside it will look something like this:
<?xml version="1.0"?>
<homespath value="/mnt/bigvg/studentvol/studenthome/"/>

This is where the problem is. The php code that drives the interface for sharing thinks that there already is a “homes” directory defined, but you know that’s not the case. Since only one homes entry is allowed, the web interface will not give you the option to make your new share the “Home Share”. To fix this we need to take out what’s inside the quotes as the value of homespath. So once that’s done the file will look like this:
<?xml version="1.0"?>
<homespath value=""/>

Save this file and go back to the share tab in the web interface and you will now get a “Make Home Share” button again.

- If you have upgraded to a Windows 2008 R2 (Win2k8 r2) AD domain and you’re getting authentication errors when accessing your openfiler shares (although everything was working fine under R1) like the ones below:
/var/log/messages shows:

Nov 16 08:42:02 openfiler winbindd[3316]: [2009/11/16 08:42:02, 0] rpc_client/cli_pipe.c:rpc_api_pipe(789)
Nov 16 08:42:02 openfiler winbindd[3316]: rpc_api_pipe: Remote machine dc.domain.tld pipe \NETLOGON fnum 0x4005 returned critical error. Error was NT_STATUS_PIPE_DISCONNECTED

and
/var/log/samba/winbind.log shows:

[2009/11/16 08:43:12, 1] winbindd/winbindd_util.c:trustdom_recv(269)
Could not receive trustdoms

then your problem (more than likely) is the version of Samba that comes with openfiler 2.3. You need to upgrade to 3.4.5. Run “conary updateall” or do “System Update” from the interface, let it update everything and reboot your machine. Once your machine is back up, leave the AD domain and rejoin it and everything should be fine.

- If you’re having problems accessing a samba share you just created on your brand new openfiler, you might want to check the following. Lets say you have a Volume Group called “bigvg” and a Volume inside that called “studentvol” where you have a share called “test”. If you’re having problems accessing the share by just using something like smb://openfiler-servername/test you might want to try connecting to the following instead:
smb://openfiler-servername/bigvg.studentvol.test
This is because by default openfiler tries to be smart and adds the volume group and volume name infront of the sharename you give it. Now, if you have a small installation this can be a pain. The easy way to fix this is to use the “Override SMB/Rsync share name:” field under the “Shares/Edit share” screen. I tend to use the same sharename I initially used (ie: “test” in this case), just to keep it simple. The only thing to remember here is that you want to make sure you don’t override with a duplicate name…..that’s gonna blowup real good.

- Couple of useful commands for Samba troubleshooting…..
To see a list of shares on your openfiler server (note that the unix command will give you those long sharenames:
Unix: smbclient -L OpenfilerServername -U domainloginid
Win: net view \\OpenfilerServername

- There is another issue with this master/slave setup and that is UID/GID synchronization for samba. This comes into play since we’re rsyncing our files from master to slave. This process also transfers their respective UID/GID to the slave machine. If the master fails, our procedure is to turn if off and reboot the slave using the masters USB stick. This works, but all those rsync’ed UID/GID’s will not match when the slave machine is booted using the masters USB stick (samba voodoo that translates windows UID/GID’s to linux UID/GID is kinda random)…..UNLESS YOU DO THE FOLLOWING (taken from Samba How-To):

The idmap_rid facility is a new tool that, unlike native winbind, creates a predictable mapping of MS Windows SIDs to UNIX UIDs and GIDs. The key benefit of this method of implementing the Samba IDMAP facility is that it eliminates the need to store the IDMAP data in a central place. The downside is that it can be used only within a single ADS domain and is not compatible with trusted domain implementations.

This alternate method of SID to UID/GID mapping can be achieved using the idmap_rid plug-in. This plug-in uses the RID of the user SID to derive the UID and GID by adding the RID to a base value specified. This utility requires that the parameter “allow trusted domains = No” be specified, as it is not compatible with multiple domain environments. The idmap uid and idmap gid ranges must be specified.

The idmap_rid facility can be used both for NT4/Samba-style domains and Active Directory. To use this with an NT4 domain, do not include the realm parameter; additionally, the method used to join the domain uses the net rpc join process.

An example smb.conf file for and ADS domain environment is shown below:
# Global parameters
[global]
workgroup = KPAK
netbios name = BIGJOE
realm = CORP.KPAK.COM
server string = Office Server
security = ADS
allow trusted domains = No
idmap backend = idmap_rid:KPAK=500-100000000
idmap uid = 500-100000000
idmap gid = 500-100000000
template shell = /bin/bash
winbind use default domain = Yes
winbind enum users = No
winbind enum groups = No
winbind nested groups = Yes
printer admin = "Domain Admins"

In a large domain with many users it is imperative to disable enumeration of users and groups. For example, at a site that has 22,000 users in Active Directory the winbind-based user and group resolution is unavailable for nearly 12 minutes following first startup of winbind. Disabling enumeration resulted in instantaneous response. The disabling of user and group enumeration means that it will not be possible to list users or groups using the getent passwd and getent group commands. It will be possible to perform the lookup for individual users, as shown in the following procedure.

The use of this tool requires configuration of NSS as per the native use of winbind. Edit the /etc/nsswitch.conf so it has the following parameters:
...
passwd: files winbind
shadow: files winbind
group: files winbind
...
hosts: files wins
...

The following procedure can use the idmap_rid facility:

1. Create or install an smb.conf file with the above configuration.
2. Edit the /etc/nsswitch.conf file as shown above.
3. Execute:
root# net ads join -UAdministrator%password
Using short domain name -- KPAK
Joined 'BIGJOE' to realm 'CORP.KPAK.COM'

An invalid or failed join can be detected by executing:
root# net ads testjoin
BIGJOE$@'s password:
[2004/11/05 16:53:03, 0] utils/net_ads.c:ads_startup(186)
ads_connect: No results returned
Join to domain is not valid

The specific error message may differ from the above because it depends on the type of failure that may have occurred. Increase the log level to 10, repeat the test, and then examine the log files produced to identify the nature of the failure.
4. Start the nmbd, winbind, and smbd daemons in the order shown.
5. Validate the operation of this configuration by executing:
root# getent passwd administrator
administrator:x:1000:1013:Administrator:/home/BE/administrator:/bin/bash

Please note that the update version of SAMBA that gets installed after you do “conary updateall” (see above) has a option for this under “Advance” tab of the Accounts section.

Share

Just came across tms , what a great tool. It a command line tool for OSX 10.5+ that allows basic CVS style operations on your Time Machine volumes and It does its thing in read-only mode, so nothing gets changed/deleted…..woohooo. Here is the stuff you can do with it:

  • help      - instructions on usage
  • version   – print the current version of this tool
  • disk      - print the current disk
  • disks     – print list of all Time Machine disks
  • volumes   – print list of all volumes
  • machine   – print the current machine
  • machines  - print the list of all machines backed up on the current disk
  • status    - print the current configuration
  • snapshots – print the list of snapshots for the current machine on the current disk
  • snaplog {} – print the log for the given (or latest) snapshot
  • log +     – print revision information for the given files
  • diff [-u] {} {} – print file diff with the given (or latest) snapshot, or between two snapshots
  • delta [-size] {

Go grab your copy NOW.

Share

Linux Server-in-a-Plug is here…..only $100

datePosted on 18:40, February 24th, 2009 by Many Ayromlou

Marvell Semiconductors is now shipping their SheevaPlug linux machines. Little tiny Linux boxes the size of a plugin adapter. The SheevaPlug draws about 5 Watts of power, comes with Linux, and boasts completely open hardware and software designs.

At $100 the platform is available in single quantities, and is priced within reach of students, hobbyists, and tinkerers. This looks like the perfect embeded platform for all sorts of stuff. Think home automation, security monitoring, ultra low powered file servers, ad-hoc mini clusters, not to mention robots and such …..there is no end to it.

Its hardware design is completely open — everything from schematics to Gerber files will be available on a marvell’s website — and ARM ports of several popular Linux distributions are already running, and included. More importantly, Marvell has committed to do everything it can to ensure the best Linux support for SheevaPlug going forward.

The $100 SheevaPlug development platform and Plug Computer designs are built around the Marvell 88F6000, or “Kirkwood” SoC, which was introduced last year. The Plug Computer is based on the high-end 88F6281 version of the Kirkwood, with a Sheeva CPU core clocked to 1.2GHz. The Sheeva core combines elements of Marvell’s earlier Feroceon and XScale architectures, both of which implemented ARM Ltd.’s ARMv5 architecture, similar to ARM Ltd.’s own “ARM9″ cores.

The SheevaPlug Plug Computer is further equipped with 512MB of DRAM and 512MB of flash. The tiny embedded PC also includes gigabit Ethernet and USB 2.0 ports. One early product based on the design is listed as measuring 4.0 x 2.5 x 2.0 inches. Plugging directly into a standard wall socket, the Plug Computer draws less than five watts under normal operation, compared to 25-100 watts for a PC being used as a home server, claims Marvell.

Early supporters of the SheevaPlug Plug Computer design include the following companies, each with links to their respective websites:

  • Cloud Engines Pogoplug — The Pogoplug enables remote viewing of external storage devices via a web browser. The device connects to an external hard drive or memory stick via USB, and to a router via gigabit Ethernet, says Cloud Engines. The 4.0 x 2.5 x 2.0-inch device plugs directly into a wall socket, and enables remote uploading of multimedia, including access from an Apple iPhone. Regularly $100, it is now available for pre-order at a special price of $80, says the company.

  • Ctera Networks CloudPlug — This Plug Computer device converts any USB drive into a NAS device, and provides secure offsite backup, says Ctera. The CloudPlug is aimed primarily at service provider OEMs that want to offer online backup services to consumers and small businesses. Equipped with gigabit Ethernet and USB 2.0 ports, the device offers features including automatic and secure online backup, and data snapshot restore, says the company.
  • Axentra HipServ — Axentra has ported its home media server application to the SheevaPlug platform, providing applications for storing, managing, sharing, viewing, or listening to digital media content remotely over the web or across a home network, says the company. HipServ for SheevaPlug is said to enable connection to third-party services such as online backup and photo print apps, as well as social networking sites like Facebook and Flickr. Recently upgraded to HipServ 2.0, the software is built on Red Hat Linux Enterprise, and is said to support UPnP-AV, DLNA, WMC, and iTunes media standards.
  • Eyecon Technologies Eyecon — This “media companion” application enables remote mobile users, including iPhone users, to discover content from sources including the Internet, DVRs, PCs, and NAS devices. The Eyecon software can then direct the media files to any connected device in the home, says the company.

Fun,fun,fun…..

Share

Sugar interface on a USB stick…..

datePosted on 23:25, February 18th, 2009 by Many Ayromlou

Thanks to Sugar Labs you can now have your Ubuntu 8.10 or Fedora 10 linux distributions with sugar on it…..Shweet :-).  Yep you heard right, go here and grab your OLPC XO inspired 1GB USB stick image and boot all those old PC’s into sugar. According to Walter Bender (the creator of Sugar OS) a new version dubbed Sucrose 0.84 is on its way soon. Complete article (including interview with Mr. Bender) is over at XConomy.

Share

LaserTouch….Multitouch using a projection TV and Lasers….

datePosted on 22:52, February 18th, 2009 by Many Ayromlou

Yep you heard right….freaking lasers…..yummy. These guys have managed to turn a rear-projection TV into a multitouch surface using IR lasers. Absolutely fantastic as it (using lasers) makes the whole design a lot simpler and gets rid of the the tracking problems associated with regular IR LED based tables and ambient IR light. Although the original laser idea comes from arbi.trario.us gang, stuffing everything inside a 16″ deep tv is a nice touch :-).

Below is a good rundown of the pros and cons of this setup vs. FTIR:

Pros
  • Excellent tracking results, even with lots of ambient IR light.
  • Zero-force: Feels very natural to work with.
  • Comparatively easy to build.
  • Comparatively cheap to build.
  • Comparatively fast to build.

Cons

  • Already “sees” the finger slightly before it touches the surface (since the laser light plane extends to about a millimeter above the surface).
  • It is very sensitive.
  • Availability of infrared lasers*
  • Lasers are dangerous for the eyes.
  • Potential problems with occlusion.

*As long as you are careful with the lasers, your eyes will be safe: Just accidentally looking into the laser for a second won’t do any harm, it’s just that you shouldn’t stare into them for long. However, since the infrared lasers also emit a bit of (red) light in the visible spectrum, you’ll notice immediately when you’re looking into a laser by accident, so you can turn your head away. It’s really nothing to worry about too much, but it’s most definitely not an ideal setup if you want to work with children, for example!

Their blog page outlines everything…..and I mean everything.

Share
123Next