<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://elinux.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://elinux.org/api.php?action=feedcontributions&amp;user=Mysli&amp;feedformat=atom</id>
		<title>eLinux.org - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://elinux.org/api.php?action=feedcontributions&amp;user=Mysli&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://elinux.org/Special:Contributions/Mysli"/>
		<updated>2013-05-23T14:18:13Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.21alpha</generator>

	<entry>
		<id>http://elinux.org/Category:ECE497</id>
		<title>Category:ECE497</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Category:ECE497"/>
				<updated>2012-10-08T22:29:43Z</updated>
		
		<summary type="html">&lt;p&gt;Mysli: Abbreviation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{YoderHead}}&lt;br /&gt;
&lt;br /&gt;
Categories relating to the course ECE497. (Electrical and Computer Engineering = ECE) &lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Mysli</name></author>	</entry>

	<entry>
		<id>http://elinux.org/BeagleBoard/video</id>
		<title>BeagleBoard/video</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/BeagleBoard/video"/>
				<updated>2012-05-13T19:26:49Z</updated>
		
		<summary type="html">&lt;p&gt;Mysli: Power saving hint&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Linux]]&lt;br /&gt;
[[Category: OMAP]]&lt;br /&gt;
This article describes information regarding video output on the [[BeagleBoard]].&lt;br /&gt;
== omapfb ==&lt;br /&gt;
The current framebuffer diver has a generic interface (/dev/fb) but also a specific OMAP (2 and 3) interface for YUV overlays (/dev/fb1).&lt;br /&gt;
&lt;br /&gt;
In order to use the YUV overlays (/dev/fb1) you need to specify some kernel parameters:&lt;br /&gt;
&lt;br /&gt;
 video=omapfb:vram:2M,vram:4M&lt;br /&gt;
&lt;br /&gt;
For this particular case you'll need a corresponding consistent DMA size configuration:&lt;br /&gt;
&lt;br /&gt;
 CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=6&lt;br /&gt;
&lt;br /&gt;
In order for the display controller to work you'll need a patch from Mans Rullgard which can be found [http://people.freedesktop.org/~felipec/beagle/0001-OMAP-Enable-overlay-optimisation.patch here]. (At least at the time of this writing it's still needed 2.6.27-omap1)&lt;br /&gt;
&lt;br /&gt;
For examples of how to use the custom omapfb see:&lt;br /&gt;
&lt;br /&gt;
* [http://github.com/felipec/gst-omapfb gst-omapfb]&lt;br /&gt;
* [http://git.mansr.com/?p=omapfbplay omapfbplay]&lt;br /&gt;
&lt;br /&gt;
==DVI==&lt;br /&gt;
In order to disable/enable the video chip, insert a 0(off) or 1(on) into /sys/devices/platform/omapdss/display&amp;lt;X&amp;gt;/enabled:&lt;br /&gt;
 echo 0 &amp;gt; /sys/devices/platform/omapdss/display0/enabled&lt;br /&gt;
 echo 0 &amp;gt; /sys/devices/platform/omapdss/display1/enabled&lt;br /&gt;
&lt;br /&gt;
Thanks [https://groups.google.com/forum/?fromgroups#!topic/beagleboard/ehPaVYoHd5s this hint] it will save 0.7Watts of Power if none Video is needed (i.e. runlevel 3).&lt;/div&gt;</summary>
		<author><name>Mysli</name></author>	</entry>

	<entry>
		<id>http://elinux.org/OMAP_Power_Management</id>
		<title>OMAP Power Management</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/OMAP_Power_Management"/>
				<updated>2012-05-13T19:20:06Z</updated>
		
		<summary type="html">&lt;p&gt;Mysli: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== PM branch ==&lt;br /&gt;
The PM branch is a developement branch of the linux-omap kernel for the purposes of developing and stabilizing the PM infrastructure for OMAP and submitting it upstream.&lt;br /&gt;
&lt;br /&gt;
The maintainer of the PM branch is Kevin Hilman.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
&lt;br /&gt;
* full-chip retention in idle and suspend&lt;br /&gt;
* full-chip OFF in idle and suspend&lt;br /&gt;
* idle PM via CPUidle &lt;br /&gt;
* support for multiple OMAP3/4 boards&lt;br /&gt;
&lt;br /&gt;
The latest, tested PM branch is available as a branch named [http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=shortlog;h=pm 'pm'] from the [http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git linux-omap-pm repository].  This branch is also sync'd daily as the 'pm' branch of the [http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git main linux-omap repository].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
[[File:OMAP_PM_today.png|320px|thumb|right]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Current version === &lt;br /&gt;
&lt;br /&gt;
==== Supported platforms (OMAP3 only) ====&lt;br /&gt;
Tested on the following platforms using omap3_pm_defconfig with busybox-based initramfs, and tested full-chip RET and OFF in idle and suspend:&lt;br /&gt;
&lt;br /&gt;
* 3430SDP&lt;br /&gt;
* OMAP3EVM&lt;br /&gt;
* Beagle&lt;br /&gt;
* Overo (Water + Tobi)&lt;br /&gt;
* Nokia N900 (a.k.a RX51)&lt;br /&gt;
* Zoom2&lt;br /&gt;
* [http://www.kwikbyte.com/KBOC.html KwikByte KBOC]&lt;br /&gt;
&lt;br /&gt;
=== Using OMAP PM ===&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
By default, the OMAP is configured to hit full-chip retention in suspend.&lt;br /&gt;
&lt;br /&gt;
===== Suspend/Resume =====&lt;br /&gt;
&lt;br /&gt;
 # echo mem &amp;gt; /sys/power/state&lt;br /&gt;
&lt;br /&gt;
Serial console activity or other configured wakeup sources (keypad, touchscreen) will trigger resume.&lt;br /&gt;
&lt;br /&gt;
Upon resume, you can use the powerdomain state statistics to check whether all states hit the desired state, cf. 'Debug info'&lt;br /&gt;
&lt;br /&gt;
 # cat /debug/pm_debug/count&lt;br /&gt;
&lt;br /&gt;
In addition, if any power domains did not hit the desired state, you will see a message on the console.&lt;br /&gt;
&lt;br /&gt;
===== Enabling system for hitting retention during idle =====&lt;br /&gt;
&lt;br /&gt;
By default, the UARTs will not automatically idle when unused so they will prevent low-power states during idle.  To enable UART idle timeouts with a 5 second timeout: &lt;br /&gt;
&lt;br /&gt;
 # echo 5 &amp;gt; /sys/devices/platform/omap/omap_uart.0/sleep_timeout               &lt;br /&gt;
 # echo 5 &amp;gt; /sys/devices/platform/omap/omap_uart.1/sleep_timeout               &lt;br /&gt;
 # echo 5 &amp;gt; /sys/devices/platform/omap/omap_uart.2/sleep_timeout               &lt;br /&gt;
 # echo 5 &amp;gt; /sys/devices/platform/omap/omap_uart.3/sleep_timeout               &lt;br /&gt;
&lt;br /&gt;
NOTE: the 4th UART is only present on 3630 and OMAP4.&lt;br /&gt;
&lt;br /&gt;
Then, wait for any inactivity timers to expire (such as the 5 second UART timer) and check the powerdomain transition statistics&lt;br /&gt;
to see that transitions are happening&lt;br /&gt;
&lt;br /&gt;
  # cat /debug/pm_debug/count&lt;br /&gt;
&lt;br /&gt;
===== Enabling system for hitting OFF =====&lt;br /&gt;
&lt;br /&gt;
By default, retention is the deepest sleep state attempted.  To enable power domain transitions to off mode&lt;br /&gt;
&lt;br /&gt;
 # echo 1 &amp;gt; /debug/pm_debug/enable_off_mode&lt;br /&gt;
&lt;br /&gt;
Once again, after a suspend or after some idle time, use the power domain transition stats to check that&lt;br /&gt;
transitions to off-mode are happening&lt;br /&gt;
&lt;br /&gt;
  # cat /debug/pm_debug/count&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== DVFS: Dynamic Voltage and Frequency Scaling ====&lt;br /&gt;
&lt;br /&gt;
By default, no DVFS transitions will occur because the CPUfreq 'userspace' governor is the default governor.  This means that&lt;br /&gt;
any DVFS transitions must be manually triggered by a userspace application, or by using the CPUfreq sysfs interface( cf. 'CPUfreq kernel interface').&lt;br /&gt;
The OnDemand governor enables DVFS transitions based on CPU load.&lt;br /&gt;
&lt;br /&gt;
Usage of the CPUfreq utils:&lt;br /&gt;
 # cpufreq-info&lt;br /&gt;
Shows the current CPUfreq info: current governor, possible OPPs, current OPP ...&lt;br /&gt;
&lt;br /&gt;
To change the current governor to e.g. 'userspace' or 'ondemand':&lt;br /&gt;
 # cpufreq-set -g userspace&lt;br /&gt;
 # cpufreq-set -g ondemand&lt;br /&gt;
Note: the corresponding governor support must be compiled in the kernel or as a module.&lt;br /&gt;
&lt;br /&gt;
To change the frequency (with 'userspace' as the current governor):&lt;br /&gt;
 # cpufreq-set -f 550000&lt;br /&gt;
The frequency is in KHz, as shown by cpufreq-info&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Known Problems ===&lt;br /&gt;
&lt;br /&gt;
* Zoom2/3: serial console wakeups not working&lt;br /&gt;
** Problem: on suspend, by default the serial driver will disable serial interrupts, thus disabling the GPIO IRQ needed for wakeup.&lt;br /&gt;
** Fix: enable the wakeup feature for the tty used as console:&lt;br /&gt;
  # echo enabled &amp;gt; /sys/devices/platform/serial8250.0/tty/ttyS0/power/wakeup &lt;br /&gt;
&lt;br /&gt;
* GPIO module-level wakeups not always working&lt;br /&gt;
** Background: GPIO wakeups can happen either via the GPIO module itself (module-level wakeups) or via IO pad wakeups if the CORE powerdomain is inactive, in retention or off.&lt;br /&gt;
** If the IO pad wakeups are not enabled (either because CORE remains on, or because IO pad is not armed) GPIO wakeups may not happen unless the GPIO module-level wakeups are programmed correctly.&lt;br /&gt;
** To ensure GPIO module wakeups are programmed correctly:&lt;br /&gt;
*** Enable GPIO IRQ for wakeup GPIO, including ISR.  Use &amp;lt;tt&amp;gt;request_irq()&amp;lt;/tt&amp;gt;&lt;br /&gt;
*** Ensure GPIO is edge-triggered.  Only edge triggered GPIOs are wakeup capable (c.f. omap34xx TRM Sec. 25.5.3.1)&lt;br /&gt;
**** the &amp;lt;tt&amp;gt;flags&amp;lt;/tt&amp;gt; argument of &amp;lt;tt&amp;gt;request_irq()&amp;lt;/tt&amp;gt; should have either &amp;lt;tt&amp;gt;IRQF_TRIGGER_FALLING&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;IRQF_TRIGGER_RISING&amp;lt;/tt&amp;gt; or both.&lt;br /&gt;
*** Enable GPIO IRQ as wakeup source using &amp;lt;tt&amp;gt;enable_irq_wake(gpio_to_irq(&amp;lt;gpio&amp;gt;))&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;b&amp;gt;NOTE:&amp;lt;/b&amp;gt; It is very important that an interrupt handler be configured for the GPIO IRQ, even if it does nothing but return &amp;lt;tt&amp;gt;IRQ_HANDLED&amp;lt;/tt&amp;gt;.  This is because without an interrupt handler, the GPIO IRQ event will never be properly cleared and this can prevent the GPIO module from hitting retention or off on the next idle request (c.f. omap34xx TRM Sec. 25.5.3.1).&lt;br /&gt;
&lt;br /&gt;
* GPIO wakeup works once, but prevents future retention&lt;br /&gt;
** See &amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt; just above&lt;br /&gt;
&lt;br /&gt;
=== Advanced features for PM developers and power users ===&lt;br /&gt;
&lt;br /&gt;
==== Debug info ====&lt;br /&gt;
First, mount the debug filesystem (debugfs)&lt;br /&gt;
&lt;br /&gt;
 # mount -t debugfs debugfs /debug&lt;br /&gt;
&lt;br /&gt;
Show powerdomain state statistics and clockdomain active clocks&lt;br /&gt;
&lt;br /&gt;
 # cat /debug/pm_debug/count&lt;br /&gt;
&lt;br /&gt;
This will look something like this on OMAP3:&lt;br /&gt;
&lt;br /&gt;
  # cat /debug/pm_debug/count&lt;br /&gt;
  cefuse_pwrdm (OFF),OFF:1,RET:0,INA:0,ON:0,RET-LOGIC-OFF:0&lt;br /&gt;
  always_on_core_pwrdm (OFF),OFF:1,RET:0,INA:0,ON:0,RET-LOGIC-OFF:0&lt;br /&gt;
  l4per_pwrdm (ON),OFF:0,RET:0,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0,RET-MEMBANK2-OFF:0&lt;br /&gt;
  l3init_pwrdm (RET),OFF:0,RET:1,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0&lt;br /&gt;
  cam_pwrdm (OFF),OFF:1,RET:0,INA:0,ON:0,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0&lt;br /&gt;
  ivahd_pwrdm (RET),OFF:1,RET:1,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0,RET-MEMBANK2-OFF:0,RET-MEMBANK3-OFF:0,RET-MEMBANK4-OFF:0&lt;br /&gt;
  mpu_pwrdm (ON),OFF:0,RET:0,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0,RET-MEMBANK2-OFF:0&lt;br /&gt;
  cpu1_pwrdm (ON),OFF:0,RET:0,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0&lt;br /&gt;
  cpu0_pwrdm (ON),OFF:0,RET:0,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0&lt;br /&gt;
  tesla_pwrdm (RET),OFF:1,RET:1,INA:0,ON:0,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0,RET-MEMBANK2-OFF:0,RET-MEMBANK3-OFF:0&lt;br /&gt;
  dss_pwrdm (RET),OFF:0,RET:1,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0&lt;br /&gt;
  abe_pwrdm (ON),OFF:1,RET:0,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0,RET-MEMBANK2-OFF:0&lt;br /&gt;
  gfx_pwrdm (OFF),OFF:2,RET:0,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0&lt;br /&gt;
  core_pwrdm (ON),OFF:0,RET:0,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0,RET-MEMBANK2-OFF:0,RET-MEMBANK3-OFF:0,RET-MEMBANK4-OFF:0,RET-MEMBANK5-OFF:0&lt;br /&gt;
&lt;br /&gt;
If you see each power domain has counters specified. OFF, RET, INA and so on...The count basically keeps incrementing every time&lt;br /&gt;
it hits low power state. In the above example, cam_pwrdm (camera power domain) has hit OFF state once. GFX power domain has hit OFF state twice and like wise.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Dump current PRCM registers&lt;br /&gt;
&lt;br /&gt;
 # cat /debug/pm_debug/registers/current&lt;br /&gt;
&lt;br /&gt;
Dump PRCM register snapshot taken just before suspend (just before jump into SRAM idle code)&lt;br /&gt;
&lt;br /&gt;
 # cat /debug/pm_debug/registers/1&lt;br /&gt;
&lt;br /&gt;
Dump PRCM register snapshot taken immediately after resume&lt;br /&gt;
&lt;br /&gt;
 # cat /debug/pm_debug/registers/2&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UART wakeup and timeout options ====&lt;br /&gt;
&lt;br /&gt;
By default, each of the on-chip OMAP UARTs are enabled as wakeup sources.  In addition, they are configured with a configurable inactivity timer (default 5 seconds) after which the UART clocks are allowed to be gated during idle or suspend.&lt;br /&gt;
&lt;br /&gt;
For example, to disable the wakeup capability of a UART1 (a.k.a ttyO0)&lt;br /&gt;
  # echo disabled &amp;gt; /sys/devices/platform/omap/omap-hsuart.0/power/wakeup&lt;br /&gt;
And to change the inactivity timer to 10 seconds, instead of the default 5:&lt;br /&gt;
  # echo 10 &amp;gt; /sys/devices/platform/omap/omap-hsuart.0/sleep_timeout&lt;br /&gt;
&lt;br /&gt;
Note that you can &amp;lt;tt&amp;gt;cat&amp;lt;/tt&amp;gt; these files under &amp;lt;tt&amp;gt;/sys&amp;lt;/tt&amp;gt; as well to see the current values.&lt;br /&gt;
&lt;br /&gt;
==== UART PM Debugging Techniques ====&lt;br /&gt;
Debugging problems with the OMAP UART driver wakeup and data transfer when Power Management is enabled can be quite tedious, if one does not have a proper HW setup. An example of a setup (including both HW and SW changes) can be found in the [[OMAP_UART_pm_debugging]] page. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===== CPUfreq kernel interface =====&lt;br /&gt;
&lt;br /&gt;
Although the cpufreq utils are the preferred way to use the DVFS feature, the cpufreq kernel interface has some more information available.&lt;br /&gt;
The main entry point is in /sys/devices/system/cpu/cpu0/cpufreq.&lt;br /&gt;
&lt;br /&gt;
To list the available governors:&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors&lt;br /&gt;
&lt;br /&gt;
To list the available frequencies:&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies&lt;br /&gt;
&lt;br /&gt;
To show the current frequency:&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq&lt;br /&gt;
&lt;br /&gt;
To change the default governor:&lt;br /&gt;
 # echo ondemand &amp;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;br /&gt;
&lt;br /&gt;
The 'stats' directory has info about the cpufreq transitions and the time spent in the various OPPs:&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/total_trans&lt;br /&gt;
 # cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
[[File:OMAP_PM_future.png|320px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
=== Future directions ===&lt;br /&gt;
What's next is to get the remaining functionality of the PM branch into mainline.  As pointed out above in the 'what's left in PM branch' secion, those parts are not yet ready for mainline.  To that end, the goal of this section is to lay out a rough plan of how to get those features done in a way that can be submitted upstream.&lt;br /&gt;
&lt;br /&gt;
* 3630, OMAP4 support&lt;br /&gt;
* new OPP layer&lt;br /&gt;
* device PM control&lt;br /&gt;
&lt;br /&gt;
==== Device PM control via omap_device + omap_hwmod ====&lt;br /&gt;
&lt;br /&gt;
Currently, we have a rather ad-hoc way for device drivers to do power management.  Currently this is done in drivers by directly using the clock framework API in combination with manually setting device specific PM registers (e.g. SYSCONFIG for various idle setting bits etc.)&lt;br /&gt;
&lt;br /&gt;
The goal of new device PM control is to have a standard, common, portable interface for device drivers to control PM.  From a driver API point of view, there is a new single API: the Run-time PM API.  Internally to the OMAP PM core, the implementation of the runtime PM API will use the new omap_device and omap_hwmod layers to implement device PM.&lt;br /&gt;
&lt;br /&gt;
===== omap_hwmod, omap_device conversion =====&lt;br /&gt;
&lt;br /&gt;
An important buidling block to converting to a common framework (runtime PM) for device PM is a common framework for all on-chip hardware blocks.  This is available as the omap_device and omap_hwmod layers.  These layers provide an abstraction so that all hardware IP blocks can be controlled using the same API.  The runtime PM layer is then implemented as a think layer on top of the omap_device API.&lt;br /&gt;
&lt;br /&gt;
This implies that in order to have runtime PM support for a device, the underlying HW IP must be represented by an omap_hwmod and have a correspdonding omap_device built for it.  Then, using the runtime PM API from the driver will result in omap_device API calls to control the IP.&lt;br /&gt;
&lt;br /&gt;
* Current Status: http://omappedia.org/wiki/HWMOD&lt;br /&gt;
===== Run-time PM =====&lt;br /&gt;
&lt;br /&gt;
Run-time PM is a recent development in the upstream kernel community.  It provides an architecture independent framework for doing runtime power management of IO devices.  It also extends the platform_bus/platform_device infrastructure to allow arch-specific extentions of the platform_device.&lt;br /&gt;
&lt;br /&gt;
* LWN article: http://lwn.net/Articles/347573/&lt;br /&gt;
* Kevin Hilman's talk from ELC 2010 in San Francisco: http://elinux.org/images/0/08/ELC-2010-Hilman-Runtime-PM.pdf&lt;br /&gt;
&lt;br /&gt;
* Key features&lt;br /&gt;
** architecture independent&lt;br /&gt;
** only a framework, does nothing without platform specific hooks&lt;br /&gt;
&lt;br /&gt;
* Plans for use in linux-omap&lt;br /&gt;
** OMAP-specific extention of platform_device: contains an omap_device&lt;br /&gt;
** implement platform specific runtime PM hooks for OMAP &lt;br /&gt;
** runtime PM API used by '''all''' OMAP drivers&lt;br /&gt;
&lt;br /&gt;
* Current status&lt;br /&gt;
** Propsed runtime PM implementation for OMAP available in &amp;lt;tt&amp;gt;pm-wip/runtime&amp;lt;/tt&amp;gt; branch of Kevin's [http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git linux-omap-pm repository].&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Public Power management test framework ===&lt;br /&gt;
Some commonly used power management utilities are listed here which make sense from an OMAP perspective&lt;br /&gt;
&lt;br /&gt;
==== Cpufreq utils ====&lt;br /&gt;
[http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils.html cpufreq utils] for testing dynamic voltage and frequency scaling.&lt;br /&gt;
&lt;br /&gt;
==== Maemo pm_test ====&lt;br /&gt;
[https://garage.maemo.org/projects/pm-test/ pm-test] plugin for Maemo [https://garage.maemo.org/plugins/wiki/index.php?id=778&amp;amp;type=g says]&lt;br /&gt;
  utility which tests that kernel and kernel modules works power management wise&lt;br /&gt;
This utility could be used to sanity test the powermanagement impact to a system for suspend/restore and basic power features.&lt;br /&gt;
==== Quick verification of suspend-idle functionality ====&lt;br /&gt;
the following script may be used with userspace supporting something simple as busybox:&lt;br /&gt;
 #!/bin/ash&lt;br /&gt;
 # Quick script to verify SUSPEND Resume behavior without human intervention&lt;br /&gt;
 # Refer: http://elinux.org/OMAP_Power_Management for details&lt;br /&gt;
 &lt;br /&gt;
 # Some params that might change based on the environment&lt;br /&gt;
 SYS=/sys&lt;br /&gt;
 DEBUG=$SYS/kernel/debug&lt;br /&gt;
 PROC=/proc&lt;br /&gt;
 &lt;br /&gt;
 PMDEBUG=$DEBUG/pm_debug&lt;br /&gt;
 VOLTAGE_OFF=$PMDEBUG/voltage_off_mode&lt;br /&gt;
 kver=`uname -r`&lt;br /&gt;
 if [ $kver &amp;gt; &amp;quot;2.6.36&amp;quot; ]; then&lt;br /&gt;
 	UART=&amp;quot;$SYS/devices/platform/omap/omap-hsuart&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
 	UART=&amp;quot;$SYS/devices/platform/serial8250&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
 UART1=$UART.0/sleep_timeout&lt;br /&gt;
 UART2=$UART.1/sleep_timeout&lt;br /&gt;
 UART3=$UART.2/sleep_timeout&lt;br /&gt;
 &lt;br /&gt;
 # Setup cpu idle&lt;br /&gt;
 cpu_idle(){&lt;br /&gt;
 	echo -n &amp;quot;$1&amp;quot; &amp;gt; $PMDEBUG/sleep_while_idle&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # setup off mode&lt;br /&gt;
 off_mode(){&lt;br /&gt;
 	echo -n &amp;quot;$1&amp;quot; &amp;gt; $PMDEBUG/enable_off_mode&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Do a suspend&lt;br /&gt;
 suspend_me(){&lt;br /&gt;
 	echo -n &amp;quot;mem&amp;quot; &amp;gt; $SYS/power/state&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # get my core data (This is the last domain to hit lowest power state)&lt;br /&gt;
 core_count(){&lt;br /&gt;
 	cat $PMDEBUG/count |grep &amp;quot;^core_pwrdm&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # get my retention counter&lt;br /&gt;
 core_ret_count(){&lt;br /&gt;
 	core_count|cut -d ',' -f3|cut -d ':' -f2&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # get my off counter&lt;br /&gt;
 core_off_count(){&lt;br /&gt;
 	core_count|cut -d ',' -f2|cut -d ':' -f2&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # setup wakeup timer - automated testing&lt;br /&gt;
 wakeup_timer(){&lt;br /&gt;
 	echo -n &amp;quot;$1&amp;quot; &amp;gt; $PMDEBUG/wakeup_timer_seconds&lt;br /&gt;
 	echo -n &amp;quot;$2&amp;quot; &amp;gt; $PMDEBUG/wakeup_timer_milliseconds&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Setup our uart to be inactivity timer&lt;br /&gt;
 setup_tty_sleep_timeout() {&lt;br /&gt;
 	if [ -f $UART1 ]; then&lt;br /&gt;
 		echo -n &amp;quot;$1&amp;quot; &amp;gt; $UART1&lt;br /&gt;
 	fi&lt;br /&gt;
 	if [ -f $UART2 ]; then&lt;br /&gt;
 		echo -n &amp;quot;$1&amp;quot; &amp;gt; $UART1&lt;br /&gt;
 	fi&lt;br /&gt;
 	if [ -f $UART3 ]; then&lt;br /&gt;
 		echo -n &amp;quot;$1&amp;quot; &amp;gt; $UART3&lt;br /&gt;
 	fi&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Measurement Start&lt;br /&gt;
 measure_start(){&lt;br /&gt;
 	OFF_START=`core_off_count`&lt;br /&gt;
 	RET_START=`core_ret_count`&lt;br /&gt;
 	TIME_START=`date &amp;quot;+%s&amp;quot;`&lt;br /&gt;
 }&lt;br /&gt;
 # Measurement End&lt;br /&gt;
 measure_end(){&lt;br /&gt;
 	OFF_END=`core_off_count`&lt;br /&gt;
 	RET_END=`core_ret_count`&lt;br /&gt;
 	TIME_END=`date &amp;quot;+%s&amp;quot;`&lt;br /&gt;
 }&lt;br /&gt;
 # Common formatted print&lt;br /&gt;
 measure_print(){&lt;br /&gt;
 	DUR=`expr $TIME_END - $TIME_START`&lt;br /&gt;
 	echo &amp;quot;$1 | $2 | OFF: $OFF_START-&amp;gt;$OFF_END| RET:$RET_START-&amp;gt;$RET_END ($DUR sec)&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # verify function&lt;br /&gt;
 check_core_off(){&lt;br /&gt;
 	RESULT=FAIL&lt;br /&gt;
 	if [ $OFF_START -lt $OFF_END ]; then&lt;br /&gt;
 		RESULT=PASS&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 check_core_ret(){&lt;br /&gt;
 	RESULT=FAIL&lt;br /&gt;
 	if [ $RET_START -lt $RET_END ]; then&lt;br /&gt;
 		RESULT=PASS&lt;br /&gt;
 	fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Disable everything&lt;br /&gt;
 disable_all(){&lt;br /&gt;
 	# disable voltage off&lt;br /&gt;
 	if [ -f $VOLTAGE_OFF ]; then&lt;br /&gt;
 		echo -n &amp;quot;0&amp;quot; &amp;gt;$VOLTAGE_OFF&lt;br /&gt;
 	fi&lt;br /&gt;
 	setup_tty_sleep_timeout 0&lt;br /&gt;
 	wakeup_timer 0 0&lt;br /&gt;
 	off_mode 0&lt;br /&gt;
 	cpu_idle 0&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # test idle - core ret&lt;br /&gt;
 test_idle_ret() {&lt;br /&gt;
 	disable_all&lt;br /&gt;
 	measure_start&lt;br /&gt;
 	setup_tty_sleep_timeout 5&lt;br /&gt;
 	cpu_idle 1&lt;br /&gt;
 	sleep 20&lt;br /&gt;
 	disable_all&lt;br /&gt;
 	sleep 1;sync&lt;br /&gt;
 	measure_end&lt;br /&gt;
 	check_core_ret&lt;br /&gt;
 	measure_print &amp;quot;IDLE:RET test&amp;quot; $RESULT&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # test idle - core off&lt;br /&gt;
 test_idle_off() {&lt;br /&gt;
 	disable_all&lt;br /&gt;
 	measure_start&lt;br /&gt;
 	setup_tty_sleep_timeout 5&lt;br /&gt;
 	off_mode 1&lt;br /&gt;
 	cpu_idle 1&lt;br /&gt;
 	sleep 20&lt;br /&gt;
 	disable_all&lt;br /&gt;
 	sleep 1;sync&lt;br /&gt;
 	measure_end&lt;br /&gt;
 	check_core_off&lt;br /&gt;
 	measure_print &amp;quot;IDLE:OFF test&amp;quot; $RESULT&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # test suspend - core ret&lt;br /&gt;
 test_suspend_ret() {&lt;br /&gt;
 	disable_all&lt;br /&gt;
 	measure_start&lt;br /&gt;
 	wakeup_timer 5 0&lt;br /&gt;
 	suspend_me&lt;br /&gt;
 	disable_all&lt;br /&gt;
 	sleep 1;sync&lt;br /&gt;
 	measure_end&lt;br /&gt;
 	check_core_ret&lt;br /&gt;
 	measure_print &amp;quot;SUSPEND:RET test&amp;quot; $RESULT&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # test suspend - core off&lt;br /&gt;
 test_suspend_off() {&lt;br /&gt;
 	disable_all&lt;br /&gt;
 	measure_start&lt;br /&gt;
 	off_mode 1&lt;br /&gt;
 	wakeup_timer 5 0&lt;br /&gt;
 	suspend_me&lt;br /&gt;
 	disable_all&lt;br /&gt;
 	sleep 1;sync&lt;br /&gt;
 	measure_end&lt;br /&gt;
 	check_core_off&lt;br /&gt;
 	measure_print &amp;quot;SUSPEND:OFF test&amp;quot; $RESULT&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # mount up the basic fs&lt;br /&gt;
 already_mntd=`mount|grep $PROC`&lt;br /&gt;
 if [ x == x&amp;quot;$already_mntd&amp;quot; ]; then&lt;br /&gt;
 	mount -t proc none $PROC&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 already_mntd=`mount|grep $SYS`&lt;br /&gt;
 if [ x == x&amp;quot;$already_mntd&amp;quot; ]; then&lt;br /&gt;
 	mount -t sysfs none $SYS&lt;br /&gt;
 fi&lt;br /&gt;
 already_mntd=`mount|grep $DEBUG`&lt;br /&gt;
 if [ x == x&amp;quot;$already_mntd&amp;quot; ]; then&lt;br /&gt;
 	mount -t debugfs none $DEBUG&lt;br /&gt;
 fi&lt;br /&gt;
 # Lets run the tests one by one..&lt;br /&gt;
 NR=&amp;quot;&amp;quot;&lt;br /&gt;
 R=`test_suspend_off`&lt;br /&gt;
 echo $R&lt;br /&gt;
 NR=&amp;quot;$NR\n$R&amp;quot;&lt;br /&gt;
 R=`test_suspend_ret`&lt;br /&gt;
 echo $R&lt;br /&gt;
 NR=&amp;quot;$NR\n$R&amp;quot;&lt;br /&gt;
 R=`test_idle_off`&lt;br /&gt;
 echo $R&lt;br /&gt;
 NR=&amp;quot;$NR\n$R&amp;quot;&lt;br /&gt;
 R=`test_idle_ret`&lt;br /&gt;
 echo $R&lt;br /&gt;
 NR=&amp;quot;$NR\n$R&amp;quot;&lt;br /&gt;
 # Print End result summary&lt;br /&gt;
 cat $PMDEBUG/count&lt;br /&gt;
 &lt;br /&gt;
 # Print test summary&lt;br /&gt;
 echo -e &amp;quot;$NR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Category:OMAP]]&lt;br /&gt;
[[Category:Power Management]]&lt;/div&gt;</summary>
		<author><name>Mysli</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Talk:Grabserial</id>
		<title>Talk:Grabserial</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Talk:Grabserial"/>
				<updated>2012-01-19T22:55:46Z</updated>
		
		<summary type="html">&lt;p&gt;Mysli: /* quick and dirty */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==quick and dirty==&lt;br /&gt;
If you just need a timestamp and the input in one line, you can use the default UNIX tools like this:&lt;br /&gt;
  cat /dev/ttyUSB0 | awk '{ print strftime(&amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;), $0; }'&lt;br /&gt;
--[[User:Mysli|Mysli]] 22:55, 19 January 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>Mysli</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Talk:Grabserial</id>
		<title>Talk:Grabserial</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Talk:Grabserial"/>
				<updated>2012-01-19T22:53:00Z</updated>
		
		<summary type="html">&lt;p&gt;Mysli: Created page with &amp;quot;==quick and dirty== If you just need a timestamp and the input in one line, you can use the default UNIX tools like this:   cat /dev/ttyUSB0 | awk '{ print strftime(&amp;quot;%Y-%m-%d %H:...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==quick and dirty==&lt;br /&gt;
If you just need a timestamp and the input in one line, you can use the default UNIX tools like this:&lt;br /&gt;
  cat /dev/ttyUSB0 | awk '{ print strftime(&amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;), $0; }'&lt;/div&gt;</summary>
		<author><name>Mysli</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Mysli</id>
		<title>User:Mysli</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Mysli"/>
				<updated>2012-01-19T22:41:06Z</updated>
		
		<summary type="html">&lt;p&gt;Mysli: /* About Myself */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===About Myself===&lt;br /&gt;
I'm a German [[BeagleBoard]] and [http://wiki.openmoko.org/wiki/Neo_FreeRunner Freerunner/OpenMoko] user with some Linux experience. My favorit coding language is JAVA. Unfortunally I love the electronics and so I have to waste my time.. .&lt;br /&gt;
&lt;br /&gt;
==My code snippeds==   &lt;br /&gt;
* Printout timestamp and USB input from [[BeagleBoard_with_Arduino|Arduino]] board:&lt;br /&gt;
  cat /dev/ttyUSB0 | awk '{ print strftime(&amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;), $0; }'&lt;/div&gt;</summary>
		<author><name>Mysli</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Mysli</id>
		<title>User:Mysli</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Mysli"/>
				<updated>2012-01-19T22:39:51Z</updated>
		
		<summary type="html">&lt;p&gt;Mysli: /* About Myself */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===About Myself===&lt;br /&gt;
I'm a German [[BeagleBoard]] and [http://wiki.openmoko.org/wiki/Neo_FreeRunner|Freerunner/OpenMoko] user with some Linux experience. My favorit coding language is JAVA. Unfortunally I love the electronics and so I have to waste my time.. .&lt;br /&gt;
&lt;br /&gt;
==My code snippeds==   &lt;br /&gt;
* Printout timestamp and USB input from [[BeagleBoard_with_Arduino|Arduino]] board:&lt;br /&gt;
  cat /dev/ttyUSB0 | awk '{ print strftime(&amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;), $0; }'&lt;/div&gt;</summary>
		<author><name>Mysli</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Mysli</id>
		<title>User:Mysli</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Mysli"/>
				<updated>2012-01-19T22:35:18Z</updated>
		
		<summary type="html">&lt;p&gt;Mysli: Created page with &amp;quot;===About Myself=== I'm a german Beagleboard and OpenMoko user with some Linux experience. My favorit coding language is JAVA. Unfortunally I love the electronics and so I...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===About Myself===&lt;br /&gt;
I'm a german [[Beagleboard]] and [[OpenMoko]] user with some Linux experience. My favorit coding language is JAVA. Unfortunally I love the electronics and so I have to waste my time.. .&lt;br /&gt;
&lt;br /&gt;
==My code snippeds==   &lt;br /&gt;
* Printout timestamp and USB input from [[BeagleBoard_with_Arduino|Arduino]] board:&lt;br /&gt;
  cat /dev/ttyUSB0 | awk '{ print strftime(&amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;), $0; }'&lt;/div&gt;</summary>
		<author><name>Mysli</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Grabserial</id>
		<title>Grabserial</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Grabserial"/>
				<updated>2012-01-08T22:55:57Z</updated>
		
		<summary type="html">&lt;p&gt;Mysli: /* pyserial (required python library) */ BB and version updated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;grabserial - grab serial port output&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
grabserial is a small program which reads a serial port and writes the&lt;br /&gt;
data to standard output.  The main purpose of this tool is to collect&lt;br /&gt;
messages written to the serial console from a target board running&lt;br /&gt;
Linux, and save the messages on a host machine.&lt;br /&gt;
&lt;br /&gt;
== Download and Installation ==&lt;br /&gt;
Current version (1.5.0) is available here: [[Media:grabserial-1.5.0]]&lt;br /&gt;
&lt;br /&gt;
Right click on the link and select &amp;quot;Save Link as&amp;quot; to download.&lt;br /&gt;
&lt;br /&gt;
(See [[File:grabserial]] for file information)&lt;br /&gt;
&lt;br /&gt;
Also available here: http://makelinux.com/emb/grabserial&lt;br /&gt;
&lt;br /&gt;
''Note: Due to MediaWiki stupidity, this file downloads with a leading upper-case letter, and a txt extension.  Please rename to lowercase on download (e.g. &amp;quot;mv Grabserial.txt grabserial&amp;quot;)''&lt;br /&gt;
&lt;br /&gt;
Also, you may need to change the file permissions in order to execute this.  On Linux, try this:&lt;br /&gt;
 sudo chmod a+x grabserial&lt;br /&gt;
&lt;br /&gt;
To install, place 'grabserial' on the path.  This should work:&lt;br /&gt;
 sudo mv grabserial /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
=== Older versions ===&lt;br /&gt;
I don't know why you'd want these, but here are some older versions of grabserial:&lt;br /&gt;
&lt;br /&gt;
[[File:grabserial-1.0.0]]&lt;br /&gt;
&lt;br /&gt;
=== pyserial (required python library) ===&lt;br /&gt;
grabserial requires the python &amp;quot;serial&amp;quot; module.  This module is not shipped with&lt;br /&gt;
most distributions of python by default.  On some recent distributions of Linux&lt;br /&gt;
pyserial is available as a package.  For example, to install it on Fedora 12,&lt;br /&gt;
do this (as root): 'yum -y install pyserial'. The [[BeagleBoard]] with Angstrom needs a 'opkg install python-pyserial'.&lt;br /&gt;
&lt;br /&gt;
Here's a copy you can install if you don't have it.&lt;br /&gt;
(You can check if you already have it by typing:&lt;br /&gt;
'python', then &amp;quot;import serial&amp;quot; in the interactive python interpreter.&lt;br /&gt;
&lt;br /&gt;
[[Media:pyserial-2.2.zip]]&lt;br /&gt;
&lt;br /&gt;
To install this, download the archive, unzip it, and following the installation&lt;br /&gt;
instructions in pyserial-2.2/README.txt.&lt;br /&gt;
&lt;br /&gt;
The latest Pyserial can be obtained from: [http://pypi.python.org/pypi/pyserial]&lt;br /&gt;
The current version as of November 2011 is 2.6, which is newer than what I've&lt;br /&gt;
got here.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
The grabserial program is very simple, but it provides some useful&lt;br /&gt;
extra features that make it more than a mere 'cat' program.&lt;br /&gt;
&lt;br /&gt;
Use 'grabserial -h' to see online usage for the program.&lt;br /&gt;
&lt;br /&gt;
You can specify the serial configuration options, including the Linux&lt;br /&gt;
device node to use, and the port speed settings on the grabserial&lt;br /&gt;
command line. If no options are specified, grabserial uses serial port&lt;br /&gt;
/dev/ttyS0, at 115200 baud with &amp;quot;8, None and 1&amp;quot; (8N1)&lt;br /&gt;
settings.&lt;br /&gt;
&lt;br /&gt;
Normally, the program runs in an infinite loop,&lt;br /&gt;
reading from the serial port and writing to standard out until it is&lt;br /&gt;
interrupted by the user (usually by typing control-C).  However, you&lt;br /&gt;
can tell the program to stop after a certain amount of time.  This is&lt;br /&gt;
useful for including the script in automated test scenarios.&lt;br /&gt;
&lt;br /&gt;
Also, you can tell the program to provide timing information for each&lt;br /&gt;
line received.  This is useful to measure the time it takes for events&lt;br /&gt;
to happen on the target. A common thing to measure on&lt;br /&gt;
a target running embedded Linux is bootup time.&lt;br /&gt;
With grabserial, you can specify a pattern&lt;br /&gt;
to match against the lines read from the serial port.  When this&lt;br /&gt;
pattern is seen, it sets a &amp;quot;base time&amp;quot;, and all subsequent time values&lt;br /&gt;
printed out will be relative to this base.  Thus, you can customize&lt;br /&gt;
the start time for the time measurements, to make it easier to see the&lt;br /&gt;
duration of events in the system.&lt;br /&gt;
&lt;br /&gt;
== Usage Examples ==&lt;br /&gt;
Here are some examples of use:&lt;br /&gt;
&lt;br /&gt;
 grabserial&lt;br /&gt;
&lt;br /&gt;
This will echo data seen on device /dev/ttyS0, until the user presses ctrl-C.&lt;br /&gt;
&lt;br /&gt;
 grabserial -v -d &amp;quot;/dev/ttyUSB0&amp;quot; -b 115200 -w 8 -p N -s 1 -e 30 -t -m &amp;quot;Starting kernel.*&amp;quot; &lt;br /&gt;
&lt;br /&gt;
This opens /dev/ttyUSB0, at baud rate 115200, and 8-bit chars, No parity and 1 stop bit.&lt;br /&gt;
This will capture and display data for 30 seconds, putting a timestamp on each line&lt;br /&gt;
received, and restarting the timestamp at 0 when a line containing &amp;quot;Kernel start&amp;quot; is seen.&lt;br /&gt;
The '-v' makes grabserial verbose (printing some extra messages before starting.&lt;br /&gt;
&lt;br /&gt;
If you want to use grabserial with minicom on the same serial port without conflict, for example to temporarily set a boot parameter or specify a different kernel image without changing the parameters in flash, you could follow this procedure:&lt;br /&gt;
* Prepare the grabserial command in one window but don't hit enter.&lt;br /&gt;
* Open minicom and set the bootloader environment, bootargs, etc. and tftp the kernel.&lt;br /&gt;
* Use one bootloader command to delay a few seconds and boot.  For u-boot this is done with something like: &amp;quot;sleep 5; bootm 0x80000000&amp;quot;.&lt;br /&gt;
* Immediately exit minicom and run grabserial.  After the delay expires, grabserial measures boot output.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sample Output ==&lt;br /&gt;
Here is sample output from grabserial.  This shows the reboot of an ARM-based system (OMAP Starter Kit).&lt;br /&gt;
Note that the U-Boot prompt appears at time 0.313168.  The grabserial command specifies to restart the&lt;br /&gt;
timestamps when &amp;quot;Starting kernel.*&amp;quot; is seen.  This happens at time 8.376117 after grabserial save the&lt;br /&gt;
first character on the serial port. (Use the -l option to time from the start of grabserial.)&lt;br /&gt;
&lt;br /&gt;
Note that the first kernel message appears 1.517790 seconds later.  Actually, the kernel starts well before this,&lt;br /&gt;
but it takes this long before the kernel to initialize the serial port and start emitting messages.  You will&lt;br /&gt;
notice that a bunch of messages come out in rapid succession.  These are messages that were queued up during&lt;br /&gt;
the boot, before the serial console was initialized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[tbird@timdesk data]$ ../grabserial -v -d /dev/ttyUSB1 -e 30 -t -m &amp;quot;Starting kernel.*&amp;quot;&lt;br /&gt;
Opening serial port /dev/ttyUSB1&lt;br /&gt;
115200:8N1:xonxoff=0:rtcdtc=0&lt;br /&gt;
Program will end in 30 seconds&lt;br /&gt;
Printing timing information for each line&lt;br /&gt;
Matching pattern 'Starting kernel.*' to set base time&lt;br /&gt;
Use Control-C to stop...&lt;br /&gt;
[0.000001 0.000001] &lt;br /&gt;
[0.000433 0.000432] &lt;br /&gt;
[0.001908 0.001475] Texas Instruments X-Loader 1.41 (Sep  1 2010 - 13:43:00)&lt;br /&gt;
[0.295940 0.294032] mmc read: Invalid size&lt;br /&gt;
[0.299905 0.003965] Starting OS Bootloader from MMC/SD1 ...&lt;br /&gt;
[0.311140 0.011235] &lt;br /&gt;
[0.313113 0.001973] &lt;br /&gt;
[0.313168 0.000055] U-Boot 1.1.4-gcebe815a-dirty (Aug 16 2010 - 10:34:46)&lt;br /&gt;
[0.317314 0.004146] &lt;br /&gt;
[0.317353 0.000039] Load address: 0x80e80000&lt;br /&gt;
[0.319459 0.002106] DRAM:  512 MB&lt;br /&gt;
[0.321147 0.001688] Flash:  0 kB&lt;br /&gt;
[0.360937 0.039790] *** Warning - bad CRC, using default environment&lt;br /&gt;
[0.366966 0.006029] &lt;br /&gt;
[0.387197 0.020231] In:    serial&lt;br /&gt;
[0.389297 0.002100] Out:   serial&lt;br /&gt;
[0.389563 0.000266] Err:   serial&lt;br /&gt;
[0.765933 0.376370] Net:   KS8851SNL&lt;br /&gt;
[0.770903 0.004970] Hit any key to stop autoboot:  0 &lt;br /&gt;
[0.773266 0.002363] PANDA # &lt;br /&gt;
[0.775024 0.001758] PANDA #  &lt;br /&gt;
[1.323977 0.548953] PANDA #  &lt;br /&gt;
[2.326983 1.003006] PANDA # setenv bootargs 'console=ttyO2,115200n8 mem=463M root=/dev/mmcblk0p3 rw rootwait init=/linuxrc'&lt;br /&gt;
[3.340146 1.013163] PANDA # mmcinit 0;fatload mmc 0 0x80000000 uimage.new; bootm 80000000&lt;br /&gt;
[6.950910 3.610764] mmc read: Invalid size&lt;br /&gt;
[6.953938 0.003028] &lt;br /&gt;
[6.953986 0.000048] 2733352 bytes read&lt;br /&gt;
[6.955974 0.001988] ## Booting image at 80000000 ...&lt;br /&gt;
[6.958304 0.002330]    Image Name:   Linux-2.6.35-g6d019da-dirty&lt;br /&gt;
[6.962329 0.004025]    Image Type:   ARM Linux Kernel Image (uncompressed)&lt;br /&gt;
[6.968092 0.005763]    Data Size:    2733288 Bytes =  2.6 MB&lt;br /&gt;
[6.972061 0.003969]    Load Address: 80008000&lt;br /&gt;
[6.974130 0.002069]    Entry Point:  80008000&lt;br /&gt;
[6.976195 0.002065]    Verifying Checksum ... OK&lt;br /&gt;
[8.374915 1.398720] OK&lt;br /&gt;
[8.376069 0.001154] &lt;br /&gt;
[8.376117 0.000048] Starting kernel ...&lt;br /&gt;
[0.001022 0.001022] &lt;br /&gt;
[0.003100 0.002078] Uncompressing Linux... done, booting the kernel.&lt;br /&gt;
[1.517790 1.514690] Linux version 2.6.35-g6d019da-dirty (danders@ccd-dev) (gcc version 4.3.3 (GCC) ) #11 SMP PREEMPT Wed Sep 1 16:11:03 CDT 2010&lt;br /&gt;
[1.529238 0.011448] CPU: ARMv7 Processor [411fc092] revision 2 (ARMv7), cr=10c53c7f&lt;br /&gt;
[1.535071 0.005833] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache&lt;br /&gt;
[1.541228 0.006157] Machine: OMAP4430 Panda Board&lt;br /&gt;
[1.544865 0.003637] Memory policy: ECC disabled, Data cache writealloc&lt;br /&gt;
[1.549032 0.004167] OMAP4430 ES2.0&lt;br /&gt;
[1.550879 0.001847] SRAM: Mapped pa 0x40300000 to va 0xfe400000 size: 0x100000&lt;br /&gt;
[1.555136 0.004257] FIXME: omap44xx_sram_init not implemented&lt;br /&gt;
[1.559230 0.004094] Reserving 33554432 bytes SDRAM for VRAM&lt;br /&gt;
[1.563250 0.004020] PERCPU: Embedded 6 pages/cpu @c296a000 s4000 r8192 d12384 u65536&lt;br /&gt;
[1.569195 0.005945] pcpu-alloc: s4000 r8192 d12384 u65536 alloc=16*4096&lt;br /&gt;
[1.574161 0.004966] pcpu-alloc: [0] 0 [0] 1 &lt;br /&gt;
[1.576292 0.002131] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 117602&lt;br /&gt;
[1.584048 0.007756] Kernel command line: console=ttyO2,115200n8 mem=463M root=/dev/mmcblk0p3 rw rootwait init=/linuxrc&lt;br /&gt;
[1.592129 0.008081] PID hash table entries: 2048 (order: 1, 8192 bytes)&lt;br /&gt;
[1.597900 0.005771] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)&lt;br /&gt;
[1.603869 0.005969] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)&lt;br /&gt;
[1.608822 0.004953] Memory: 463MB = 463MB total&lt;br /&gt;
[1.611170 0.002348] Memory: 431292k/431292k available, 42820k reserved, 0K highmem&lt;br /&gt;
[1.617212 0.006042] Virtual kernel memory layout:&lt;br /&gt;
[1.620982 0.003770]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)&lt;br /&gt;
[1.624982 0.004000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)&lt;br /&gt;
[1.629106 0.004124]     DMA     : 0xffc00000 - 0xffe00000   (   2 MB)&lt;br /&gt;
[1.634850 0.005744]     vmalloc : 0xdd000000 - 0xf8000000   ( 432 MB)&lt;br /&gt;
[1.639111 0.004261]     lowmem  : 0xc0000000 - 0xdcf00000   ( 463 MB)&lt;br /&gt;
[1.643197 0.004086]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)&lt;br /&gt;
[1.647311 0.004114]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)&lt;br /&gt;
[1.652916 0.005605]       .init : 0xc0008000 - 0xc0033000   ( 172 kB)&lt;br /&gt;
[1.657042 0.004126]       .text : 0xc0033000 - 0xc052e000   (5100 kB)&lt;br /&gt;
[1.661156 0.004114]       .data : 0xc052e000 - 0xc05934a0   ( 406 kB)&lt;br /&gt;
[1.666921 0.005765] SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=2, Nodes=1&lt;br /&gt;
[1.673146 0.006225] Hierarchical RCU implementation.&lt;br /&gt;
[1.676926 0.003780] 	RCU-based detection of stalled CPUs is disabled.&lt;br /&gt;
[1.680951 0.004025] 	Verbose stalled-CPUs detection is disabled.&lt;br /&gt;
[1.684982 0.004031] NR_IRQS:388&lt;br /&gt;
[1.686807 0.001825] omap_hwmod: sys_32k_ck: missing clockdomain for sys_32k_ck.&lt;br /&gt;
[1.691105 0.004298] omap_hwmod: l3_div_ck: missing clockdomain for l3_div_ck.&lt;br /&gt;
[1.697134 0.006029] omap_hwmod: dpll_mpu_m2_ck: missing clockdomain for dpll_mpu_m2_ck.&lt;br /&gt;
[1.703230 0.006096] omap_hwmod: gpio2: failed to reset in 10000 usec&lt;br /&gt;
[1.707250 0.004020] omap_hwmod: gpio3: failed to reset in 10000 usec&lt;br /&gt;
[1.712968 0.005718] omap_hwmod: gpio4: failed to reset in 10000 usec&lt;br /&gt;
[1.716947 0.003979] omap_hwmod: gpio5: failed to reset in 10000 usec&lt;br /&gt;
[1.721054 0.004107] omap_hwmod: gpio6: failed to reset in 10000 usec&lt;br /&gt;
[1.725351 0.004297] omap_hwmod: gpu: cannot be enabled (3)&lt;br /&gt;
[1.729211 0.003860] omap_hwmod: i2c1: failed to reset in 10000 usec&lt;br /&gt;
[1.733284 0.004073] omap_hwmod: i2c2: failed to reset in 10000 usec&lt;br /&gt;
[1.738977 0.005693] omap_hwmod: i2c3: failed to reset in 10000 usec&lt;br /&gt;
[1.743060 0.004083] omap_hwmod: i2c4: failed to reset in 10000 usec&lt;br /&gt;
[1.747027 0.003967] omap_hwmod: iva: cannot be enabled (3)&lt;br /&gt;
[1.750949 0.003922] omap_hwmod: omap-mcpdm-dai: cannot be enabled (3)&lt;br /&gt;
[1.755226 0.004277] GPMC revision 6.0&lt;br /&gt;
[1.757173 0.001947]  dmtimer.0: omap_dm_timer_probe:[id=0]&lt;br /&gt;
[1.761072 0.003899]  dmtimer.0:  registered&lt;br /&gt;
[1.763095 0.002023]  dmtimer.1: omap_dm_timer_probe:[id=1]&lt;br /&gt;
[1.767046 0.003951]  dmtimer.1:  registered&lt;br /&gt;
[1.769091 0.002045]  dmtimer.9: omap_dm_timer_probe:[id=9]&lt;br /&gt;
[1.772898 0.003807]  dmtimer.9:  registered&lt;br /&gt;
[1.774946 0.002048] OMAP clockevent source: GPTIMER1 at 32768 Hz&lt;br /&gt;
[1.778961 0.004015] Console: colour dummy device 80x30&lt;br /&gt;
[1.782804 0.003843] Calibrating delay loop... 2013.49 BogoMIPS (lpj=7864320)&lt;br /&gt;
[1.787305 0.004501] pid_max: default: 32768 minimum: 301&lt;br /&gt;
[1.791105 0.003800] Mount-cache hash table entries: 512&lt;br /&gt;
[1.794971 0.003866] CPU: Testing write buffer coherency: ok&lt;br /&gt;
[1.797277 0.002306] Calibrating local timer... 491.16MHz.&lt;br /&gt;
[1.801125 0.003848] L310 cache controller enabled&lt;br /&gt;
[1.804846 0.003721] l2x0: 16 ways, CACHE_ID 0x410000c4, AUX_CTRL 0x0e070000&lt;br /&gt;
[1.809071 0.004225] CPU1: Booted secondary processor&lt;br /&gt;
[1.812884 0.003813] Brought up 2 CPUs&lt;br /&gt;
[1.814805 0.001921] SMP: Total of 2 processors activated (3976.57 BogoMIPS).&lt;br /&gt;
[1.819213 0.004408] devtmpfs: initialized&lt;br /&gt;
[1.821226 0.002013] regulator: core version 0.5&lt;br /&gt;
[1.824931 0.003705] NET: Registered protocol family 16&lt;br /&gt;
[1.827200 0.002269] OMAP GPIO hardware version 0.1&lt;br /&gt;
[1.830892 0.003692] PandaBoard Revision: 003&lt;br /&gt;
[1.832919 0.002027] OMAP DMA hardware revision 0.0&lt;br /&gt;
[1.835089 0.002170] dma dma.0: System DMA registered&lt;br /&gt;
[1.838913 0.003824] bio: create slab &amp;lt;bio-0&amp;gt; at 0&lt;br /&gt;
[1.841073 0.002160] SCSI subsystem initialized&lt;br /&gt;
[1.843169 0.002096] usbcore: registered new interface driver usbfs&lt;br /&gt;
[1.849011 0.005842] usbcore: registered new interface driver hub&lt;br /&gt;
[1.853012 0.004001] usbcore: registered new device driver usb&lt;br /&gt;
[1.856985 0.003973] i2c_omap i2c_omap.1: bus 1 rev4.0 at 400 kHz&lt;br /&gt;
[1.860942 0.003957] Skipping twl internal clock init and using bootloader value (unknown osc rate)&lt;br /&gt;
[1.867124 0.006182] twl6030: PIH (irq 39) chaining IRQs 368..387&lt;br /&gt;
[1.871157 0.004033] regulator: VMMC: 1200 &amp;lt;--&amp;gt; 3000 mV at 3000 mV normal standby&lt;br /&gt;
[1.877312 0.006155] regulator: VPP: 1800 &amp;lt;--&amp;gt; 2500 mV at 1900 mV normal standby&lt;br /&gt;
[1.883126 0.005814] regulator: VANA: 2100 mV normal standby&lt;br /&gt;
[1.887062 0.003936] regulator: VCXIO: 1800 mV normal standby&lt;br /&gt;
[1.890945 0.003883] regulator: VDAC: 1800 mV normal standby&lt;br /&gt;
[1.894850 0.003905] regulator: VUSB: 3300 mV normal standby&lt;br /&gt;
[1.897169 0.002319] regulator: VAUX2_6030: 1200 &amp;lt;--&amp;gt; 2800 mV at 1800 mV normal standby&lt;br /&gt;
[1.903185 0.006016] regulator: VAUX3_6030: 1000 &amp;lt;--&amp;gt; 3000 mV at 1200 mV normal standby&lt;br /&gt;
[1.910987 0.007802] Advanced Linux Sound Architecture Driver Version 1.0.23.&lt;br /&gt;
[1.915210 0.004223] Bluetooth: Core ver 2.15&lt;br /&gt;
[1.917299 0.002089] NET: Registered protocol family 31&lt;br /&gt;
[1.921054 0.003755] Bluetooth: HCI device and connection manager initialized&lt;br /&gt;
[1.926864 0.005810] Bluetooth: HCI socket layer initialized&lt;br /&gt;
[1.929190 0.002326] cfg80211: Calling CRDA to update world regulatory domain&lt;br /&gt;
[1.935198 0.006008] Switching to clocksource timer-32k&lt;br /&gt;
[1.938041 0.002843] NET: Registered protocol family 2&lt;br /&gt;
[1.942055 0.004014] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)&lt;br /&gt;
[1.948004 0.005949] TCP established hash table entries: 16384 (order: 5, 131072 bytes)&lt;br /&gt;
[1.953923 0.005919] TCP bind hash table entries: 16384 (order: 5, 196608 bytes)&lt;br /&gt;
[1.959822 0.005899] TCP: Hash tables configured (established 16384 bind 16384)&lt;br /&gt;
[1.964092 0.004270] TCP reno registered&lt;br /&gt;
[1.966320 0.002228] UDP hash table entries: 256 (order: 1, 8192 bytes)&lt;br /&gt;
[1.971986 0.005666] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)&lt;br /&gt;
[1.976153 0.004167] NET: Registered protocol family 1&lt;br /&gt;
[1.980003 0.003850] RPC: Registered udp transport module.&lt;br /&gt;
[1.982875 0.002872] RPC: Registered tcp transport module.&lt;br /&gt;
[1.986036 0.003161] RPC: Registered tcp NFSv4.1 backchannel transport module.&lt;br /&gt;
[1.991977 0.005941] omap-iommu omap-iommu.0: ducati registered&lt;br /&gt;
[1.996071 0.004094] omap-iommu omap-iommu.1: tesla registered&lt;br /&gt;
[2.000135 0.004064] iovmm-omap initialized ducati, major: 251, base-minor: 0&lt;br /&gt;
[2.004342 0.004207] iovmm-omap initialized tesla, major: 251, base-minor: 1&lt;br /&gt;
[2.010074 0.005732] dmtimer dmtimer.0: omap_dm_timer_probe:[id=0]&lt;br /&gt;
[2.014059 0.003985] dmtimer dmtimer.1: omap_dm_timer_probe:[id=1]&lt;br /&gt;
[2.018104 0.004045] dmtimer dmtimer.9: omap_dm_timer_probe:[id=9]&lt;br /&gt;
[2.022233 0.004129] dmtimer dmtimer.2: omap_dm_timer_probe:[id=2]&lt;br /&gt;
[2.028005 0.005772] dmtimer dmtimer.2:  registered&lt;br /&gt;
[2.030183 0.002178] dmtimer dmtimer.3: omap_dm_timer_probe:[id=3]&lt;br /&gt;
[2.034195 0.004012] dmtimer dmtimer.3:  registered&lt;br /&gt;
[2.037994 0.003799] dmtimer dmtimer.4: omap_dm_timer_probe:[id=4]&lt;br /&gt;
[2.041866 0.003872] dmtimer dmtimer.4:  registered&lt;br /&gt;
[2.044870 0.003004] dmtimer dmtimer.5: omap_dm_timer_probe:[id=5]&lt;br /&gt;
[2.048924 0.004054] dmtimer dmtimer.5:  registered&lt;br /&gt;
[2.051100 0.002176] dmtimer dmtimer.6: omap_dm_timer_probe:[id=6]&lt;br /&gt;
[2.055447 0.004347] dmtimer dmtimer.6:  registered&lt;br /&gt;
[2.059001 0.003554] dmtimer dmtimer.7: omap_dm_timer_probe:[id=7]&lt;br /&gt;
[2.063112 0.004111] dmtimer dmtimer.7:  registered&lt;br /&gt;
[2.065279 0.002167] dmtimer dmtimer.8: omap_dm_timer_probe:[id=8]&lt;br /&gt;
[2.070931 0.005652] dmtimer dmtimer.8:  registered&lt;br /&gt;
[2.072994 0.002063] dmtimer dmtimer.10: omap_dm_timer_probe:[id=10]&lt;br /&gt;
[2.077065 0.004071] dmtimer dmtimer.10:  registered&lt;br /&gt;
[2.080876 0.003811] omap-remoteproc omap-remoteproc.0: omap_rproc_probe: adding rproc tesla&lt;br /&gt;
[2.086939 0.006063] omap-remoteproc omap-remoteproc.0: omap-rproc initialized tesla, major: 250, base-minor: 0&lt;br /&gt;
[2.095179 0.008240] omap-remoteproc omap-remoteproc.1: omap_rproc_probe: adding rproc ducati-proc0&lt;br /&gt;
[2.102905 0.007726] omap-remoteproc omap-remoteproc.1: omap-rproc initialized ducati-proc0, major: 250, base-minor: 1&lt;br /&gt;
[2.111086 0.008181] omap-remoteproc omap-remoteproc.2: omap_rproc_probe: adding rproc ducati-proc1&lt;br /&gt;
[2.117950 0.006864] omap-remoteproc omap-remoteproc.2: omap-rproc initialized ducati-proc1, major: 250, base-minor: 2&lt;br /&gt;
[2.128058 0.010108] VFS: Disk quotas dquot_6.5.2&lt;br /&gt;
[2.130214 0.002156] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)&lt;br /&gt;
[2.135960 0.005746] msgmni has been set to 842&lt;br /&gt;
[2.138067 0.002107] alg: No test for stdrng (krng)&lt;br /&gt;
[2.141860 0.003793] io scheduler noop registered&lt;br /&gt;
[2.143952 0.002092] io scheduler deadline registered&lt;br /&gt;
[2.146805 0.002853] io scheduler cfq registered (default)&lt;br /&gt;
[2.151045 0.004240] OMAP DSS rev 4.0&lt;br /&gt;
[2.152977 0.001932] OMAP DISPC rev 4.0&lt;br /&gt;
[2.153343 0.000366] OMAP DSI rev 3.0&lt;br /&gt;
[2.155239 0.001896] OMAP DSI2 rev 3.0&lt;br /&gt;
[2.157197 0.001958] OMAP HDMI W1 rev 2.0&lt;br /&gt;
[2.159062 0.001865] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled&lt;br /&gt;
[2.164886 0.005824] omap-hsuart.0: ttyO0 at MMIO 0x4806a000 (irq = 104) is a OMAP UART0&lt;br /&gt;
[2.170947 0.006061] omap-hsuart.1: ttyO1 at MMIO 0x4806c000 (irq = 105) is a OMAP UART1&lt;br /&gt;
[2.177141 0.006194] omap-hsuart.2: ttyO2 at MMIO 0x48020000 (irq = 106) is a OMAP UART2&lt;br /&gt;
[2.183171 0.006030] console [ttyO2] enabled&lt;br /&gt;
[2.185213 0.002042] omap-hsuart.3: ttyO3 at MMIO 0x4806e000 (irq = 102) is a OMAP UART3&lt;br /&gt;
[2.196774 0.011561] brd: module loaded&lt;br /&gt;
[2.201754 0.004980] loop: module loaded&lt;br /&gt;
[2.205050 0.003296] usbcore: registered new interface driver smsc95xx&lt;br /&gt;
[2.211208 0.006158] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver&lt;br /&gt;
[2.217036 0.005828] ehci-omap ehci-omap.0: OMAP-EHCI Host Controller&lt;br /&gt;
[2.221129 0.004093] ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 1&lt;br /&gt;
[2.228834 0.007705] ehci-omap ehci-omap.0: irq 109, io mem 0x4a064c00&lt;br /&gt;
[2.246780 0.017946] ehci-omap ehci-omap.0: USB 2.0 started, EHCI 1.00&lt;br /&gt;
[2.251165 0.004385] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002&lt;br /&gt;
[2.257125 0.005960] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1&lt;br /&gt;
[2.263919 0.006794] usb usb1: Product: OMAP-EHCI Host Controller&lt;br /&gt;
[2.268147 0.004228] usb usb1: Manufacturer: Linux 2.6.35-g6d019da-dirty ehci_hcd&lt;br /&gt;
[2.274060 0.005913] usb usb1: SerialNumber: ehci-omap.0&lt;br /&gt;
[2.277929 0.003869] hub 1-0:1.0: USB hub found&lt;br /&gt;
[2.280029 0.002100] hub 1-0:1.0: 3 ports detected&lt;br /&gt;
[2.309778 0.029749] Initializing USB Mass Storage driver...&lt;br /&gt;
[2.313926 0.004148] usbcore: registered new interface driver usb-storage&lt;br /&gt;
[2.318131 0.004205] USB Mass Storage support registered.&lt;br /&gt;
[2.322791 0.004660] twl_rtc twl_rtc: rtc core: registered twl_rtc as rtc0&lt;br /&gt;
[2.328147 0.005356] twl_rtc twl_rtc: Power up reset detected.&lt;br /&gt;
[2.333926 0.005779] twl_rtc twl_rtc: Enabling TWL-RTC.&lt;br /&gt;
[2.338102 0.004176] i2c /dev entries driver&lt;br /&gt;
[2.341150 0.003048] IR NEC protocol handler initialized&lt;br /&gt;
[2.345096 0.003946] IR RC5(x) protocol handler initialized&lt;br /&gt;
[2.348352 0.003256] IR RC6 protocol handler initialized&lt;br /&gt;
[2.352747 0.004395] IR JVC protocol handler initialized&lt;br /&gt;
[2.355195 0.002448] IR Sony protocol handler initialized&lt;br /&gt;
[2.359110 0.003915] Linux video capture interface: v2.00&lt;br /&gt;
[2.366096 0.006986] OMAP Watchdog Timer Rev 0x00: initial timeout 60 sec&lt;br /&gt;
[2.377771 0.011675] usbcore: registered new interface driver usbhid&lt;br /&gt;
[2.383017 0.005246] usbhid: USB HID core driver&lt;br /&gt;
[2.386925 0.003908] proc4430_drv_initializeModule&lt;br /&gt;
[2.390925 0.004000] omap-devicehandler omap-devicehandler.0: omap_devh_probe: adding devh Tesla&lt;br /&gt;
[2.396959 0.006034] omap-devh initialized Tesla, major: 243, base-minor: 0&lt;br /&gt;
[2.403102 0.006143] omap-devicehandler omap-devicehandler.1: omap_devh_probe: adding devh SysM3&lt;br /&gt;
[2.410138 0.007036] omap-devh initialized SysM3, major: 243, base-minor: 1&lt;br /&gt;
[2.415290 0.005152] omap-devicehandler omap-devicehandler.2: omap_devh_probe: adding devh AppM3&lt;br /&gt;
[2.422176 0.006886] omap-devh initialized AppM3, major: 243, base-minor: 2&lt;br /&gt;
[2.427875 0.005699] SDP4430 SoC init&lt;br /&gt;
[2.431763 0.003888] asoc: null-codec-dai &amp;lt;-&amp;gt; MultiMedia1 mapping ok&lt;br /&gt;
[2.437765 0.006002] asoc: null-codec-dai &amp;lt;-&amp;gt; MultiMedia2 mapping ok&lt;br /&gt;
[2.443850 0.006085] asoc: null-codec-dai &amp;lt;-&amp;gt; Voice mapping ok&lt;br /&gt;
[2.447946 0.004096] asoc: null-codec-dai &amp;lt;-&amp;gt; Tones mapping ok&lt;br /&gt;
[2.452052 0.004106] asoc: null-codec-dai &amp;lt;-&amp;gt; Vibra mapping ok&lt;br /&gt;
[2.460767 0.008715] asoc: null-codec-dai &amp;lt;-&amp;gt; MODEM mapping ok&lt;br /&gt;
[2.465014 0.004247] asoc: HDMI &amp;lt;-&amp;gt; hdmi-dai mapping ok&lt;br /&gt;
[2.469123 0.004109] asoc: FM Digital &amp;lt;-&amp;gt; omap-mcbsp-dai.1 mapping ok&lt;br /&gt;
[2.504818 0.035695] asoc: twl6040-dl1 &amp;lt;-&amp;gt; omap-mcpdm-dai mapping ok&lt;br /&gt;
[2.509218 0.004400] asoc: twl6040-dl1 &amp;lt;-&amp;gt; omap-mcpdm-dai mapping ok&lt;br /&gt;
[2.514846 0.005628] asoc: twl6040-ul &amp;lt;-&amp;gt; omap-mcpdm-dai mapping ok&lt;br /&gt;
[2.518954 0.004108] asoc: twl6040-dl2 &amp;lt;-&amp;gt; omap-mcpdm-dai mapping ok&lt;br /&gt;
[2.523078 0.004124] asoc: twl6040-vib &amp;lt;-&amp;gt; omap-mcpdm-dai mapping ok&lt;br /&gt;
[2.528824 0.005746] asoc: Bluetooth &amp;lt;-&amp;gt; omap-mcbsp-dai.0 mapping ok&lt;br /&gt;
[2.533047 0.004223] asoc: FM Digital &amp;lt;-&amp;gt; omap-mcbsp-dai.1 mapping ok&lt;br /&gt;
[2.537257 0.004210] asoc: MODEM &amp;lt;-&amp;gt; omap-mcbsp-dai.1 mapping ok&lt;br /&gt;
[2.542099 0.004842] asoc: dmic-hifi &amp;lt;-&amp;gt; omap-dmic-dai.0 mapping ok&lt;br /&gt;
[2.546060 0.003961] asoc: dmic-hifi &amp;lt;-&amp;gt; omap-dmic-dai.1 mapping ok&lt;br /&gt;
[2.551806 0.005746] asoc: dmic-hifi &amp;lt;-&amp;gt; omap-dmic-dai.2 mapping ok&lt;br /&gt;
[2.557061 0.005255] input: SDP4430 Headset Jack as /devices/platform/soc-audio/sound/card0/input0&lt;br /&gt;
[2.567831 0.010770] ALSA device list:&lt;br /&gt;
[2.570085 0.002254]   #0: SDP4430&lt;br /&gt;
[2.571874 0.001789] TCP cubic registered&lt;br /&gt;
[2.573953 0.002079] NET: Registered protocol family 17&lt;br /&gt;
[2.577831 0.003878] Bluetooth: L2CAP ver 2.14&lt;br /&gt;
[2.579980 0.002149] Bluetooth: L2CAP socket layer initialized&lt;br /&gt;
[2.583952 0.003972] Bluetooth: SCO (Voice Link) ver 0.6&lt;br /&gt;
[2.587884 0.003932] Bluetooth: SCO socket layer initialized&lt;br /&gt;
[2.591170 0.003286] Bluetooth: RFCOMM TTY layer initialized&lt;br /&gt;
[2.595260 0.004090] Bluetooth: RFCOMM socket layer initialized&lt;br /&gt;
[2.598275 0.003015] mmc0: host does not support reading read-only switch. assuming write-enable.&lt;br /&gt;
[2.604942 0.006667] mmc0: new high speed SDHC card at address 17ba&lt;br /&gt;
[2.610055 0.005113] mmcblk0: mmc0:17ba SD08G 7.42 GiB &lt;br /&gt;
[2.613895 0.003840] Bluetooth: RFCOMM ver 1.11&lt;br /&gt;
[2.615998 0.002103] lib80211: common routines for IEEE802.11 drivers&lt;br /&gt;
[2.620991 0.004993] ThumbEE CPU extension supported.&lt;br /&gt;
[2.623271 0.002280] omap_hwmod: Initialize debugfs support&lt;br /&gt;
[2.626962 0.003691] usb 1-1: new high speed USB device using ehci-omap and address 2&lt;br /&gt;
[2.634784 0.007822] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 1&lt;br /&gt;
[2.641847 0.007063]  mmcblk0: p1 p2 p3&lt;br /&gt;
[2.692755 0.050908] mmc1: card claims to support voltages below the defined range. These will be ignored.&lt;br /&gt;
[2.731764 0.039009] mmc1: queuing unknown CIS tuple 0x91 (3 bytes)&lt;br /&gt;
[2.737916 0.006152] mmc1: new SDIO card at address 0001&lt;br /&gt;
[2.795848 0.057932] wl1271: loaded&lt;br /&gt;
[2.798015 0.002167] wl1271: initialized&lt;br /&gt;
[2.799997 0.001982] Console: switching to colour frame buffer device 240x67&lt;br /&gt;
[2.804965 0.004968] usb 1-1: New USB device found, idVendor=0424, idProduct=9514&lt;br /&gt;
[2.811900 0.006935] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0&lt;br /&gt;
[2.816913 0.005013] hub 1-1:1.0: USB hub found&lt;br /&gt;
[2.820084 0.003171] hub 1-1:1.0: 5 ports detected&lt;br /&gt;
[2.980800 0.160716] regulator_init_complete: incomplete constraints, leaving VAUX3_6030 on&lt;br /&gt;
[2.988861 0.008061] regulator_init_complete: incomplete constraints, leaving VAUX2_6030 on&lt;br /&gt;
[2.995827 0.006966] regulator_init_complete: incomplete constraints, leaving VUSB on&lt;br /&gt;
[3.003093 0.007266] regulator_init_complete: incomplete constraints, leaving VDAC on&lt;br /&gt;
[3.008788 0.005695] regulator_init_complete: incomplete constraints, leaving VCXIO on&lt;br /&gt;
[3.015795 0.007007] regulator_init_complete: incomplete constraints, leaving VANA on&lt;br /&gt;
[3.022089 0.006294] regulator_init_complete: incomplete constraints, leaving VPP on&lt;br /&gt;
[3.030738 0.008649] twl_rtc twl_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)&lt;br /&gt;
[3.039092 0.008354] omap_vout omap_vout: : registered and initialized video device 0&lt;br /&gt;
[3.045180 0.006088] omap_vout omap_vout: : registered and initialized video device 1&lt;br /&gt;
[3.051171 0.005991] omap_vout omap_vout: : registered and initialized video device 2&lt;br /&gt;
[3.058083 0.006912] omap_wb: registered and initialized wb device 3 [v4l2]&lt;br /&gt;
[3.066092 0.008009] EXT3-fs: barriers not enabled&lt;br /&gt;
[3.256748 0.190656] usb 1-1.1: new high speed USB device using ehci-omap and address 3&lt;br /&gt;
[3.440734 0.183986] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00&lt;br /&gt;
[3.448035 0.007301] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0&lt;br /&gt;
[3.455796 0.007761] smsc95xx v1.0.4&lt;br /&gt;
[4.692750 1.236954] smsc95xx 1-1.1:1.0: usb0: register 'smsc95xx' at usb-ehci-omap.0-1.1, smsc95xx USB 2.0 Ethernet, de:8e:e8:81:1a:5d&lt;br /&gt;
[4.792736 0.099986] usb 1-1.2: new low speed USB device using ehci-omap and address 4&lt;br /&gt;
[5.069802 0.277066] usb 1-1.2: New USB device found, idVendor=413c, idProduct=3200&lt;br /&gt;
[5.075842 0.006040] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0&lt;br /&gt;
[5.082189 0.006347] usb 1-1.2: Product: Dell USB Mouse&lt;br /&gt;
[5.085237 0.003048] usb 1-1.2: Manufacturer: Dell&lt;br /&gt;
[5.101795 0.016558] input: Dell Dell USB Mouse as /devices/platform/ehci-omap.0/usb1/1-1/1-1.2/1-1.2:1.0/input/input1&lt;br /&gt;
[5.111899 0.010104] generic-usb 0003:413C:3200.0001: input: USB HID v1.10 Mouse [Dell Dell USB Mouse] on usb-ehci-omap.0-1.2/input0&lt;br /&gt;
[5.214793 0.102894] usb 1-1.3: new low speed USB device using ehci-omap and address 5&lt;br /&gt;
[5.441812 0.227019] usb 1-1.3: New USB device found, idVendor=413c, idProduct=2005&lt;br /&gt;
[5.449885 0.008073] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0&lt;br /&gt;
[5.454981 0.005096] usb 1-1.3: Product: DELL USB Keyboard&lt;br /&gt;
[5.458793 0.003812] usb 1-1.3: Manufacturer: DELL&lt;br /&gt;
[5.466777 0.007984] input: DELL DELL USB Keyboard as /devices/platform/ehci-omap.0/usb1/1-1/1-1.3/1-1.3:1.0/input/input2&lt;br /&gt;
[5.477803 0.011026] generic-usb 0003:413C:2005.0002: input: USB HID v1.10 Keyboard [DELL DELL USB Keyboard] on usb-ehci-omap.0-1.3/input0&lt;br /&gt;
[5.781789 0.303986] kjournald starting.  Commit interval 5 seconds&lt;br /&gt;
[5.785959 0.004170] EXT3-fs (mmcblk0p3): warning: maximal mount count reached, running e2fsck is recommended&lt;br /&gt;
[6.035796 0.249837] EXT3-fs (mmcblk0p3): using internal journal&lt;br /&gt;
[6.039926 0.004130] EXT3-fs (mmcblk0p3): recovery complete&lt;br /&gt;
[6.044852 0.004926] EXT3-fs (mmcblk0p3): mounted filesystem with writeback data mode&lt;br /&gt;
[6.051857 0.007005] VFS: Mounted root (ext3 filesystem) on device 179:3.&lt;br /&gt;
[6.058062 0.006205] devtmpfs: mounted&lt;br /&gt;
[6.060273 0.002211] Freeing init memory: 172K&lt;br /&gt;
[6.166780 0.106507] init started: BusyBox v1.13.2 (2010-04-06 10:34:20 CDT)&lt;br /&gt;
[7.684801 1.518021] startudev!!!&lt;br /&gt;
[7.695780 0.010979] Starting udev&lt;br /&gt;
[7.698020 0.002240] mounting tempfs&lt;br /&gt;
[7.718777 0.020757] invalidate udev cache!&lt;br /&gt;
[8.204795 0.486018] make extra nodes!&lt;br /&gt;
[8.207095 0.002300] trigger the sorted events!&lt;br /&gt;
[8.208989 0.001894] udevd called!&lt;br /&gt;
[8.278782 0.069793] udevadmin started!&lt;br /&gt;
[8.289778 0.010996] trigger&lt;br /&gt;
[8.698803 0.409025] settle!&lt;br /&gt;
[10.055795 1.356992] EXT3-fs: barriers not enabled&lt;br /&gt;
[10.059797 0.004002] EXT3-fs (mmcblk0p2): warning: maximal mount count reached, running e2fsck is recommended&lt;br /&gt;
[10.069092 0.009295] kjournald starting.  Commit interval 5 seconds&lt;br /&gt;
[10.309834 0.240742] EXT3-fs (mmcblk0p2): using internal journal&lt;br /&gt;
[10.314926 0.005092] EXT3-fs (mmcblk0p2): recovery complete&lt;br /&gt;
[10.318906 0.003980] EXT3-fs (mmcblk0p2): mounted filesystem with writeback data mode&lt;br /&gt;
[13.875808 3.556902] udev startup complete!&lt;br /&gt;
[15.623906 1.748098] starting pid 1452, tty '/dev/ttyO2': '/bin/sh'&lt;br /&gt;
[15.628851 0.004945] / #&lt;br /&gt;
[tbird@timdesk data]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Usage Notes ==&lt;br /&gt;
=== Timing of kernel printk messages ===&lt;br /&gt;
Note that the kernel printk messages are normally sent to the console at the time that the printk()&lt;br /&gt;
function is called in the kernel.  So the timings for printk messages are pretty good at indicating the&lt;br /&gt;
time where a particular activity occured.  However, during early boot (and specifically, before the serial&lt;br /&gt;
console is initialized) the kernel message are stored in the log buffer.  By default, all of the&lt;br /&gt;
messages between kernel start and console initialization are dumped to the serial port at the time of console&lt;br /&gt;
initialization, which gives these events an incorrect time.&lt;br /&gt;
&lt;br /&gt;
You can help correct this somewhat using the early printk option with the kernel.  On ARM, you need to&lt;br /&gt;
configure the kernel for low-level debugging to enable this feature.  To do this, set the following in your kernel configuration:&lt;br /&gt;
* CONFIG_DEBUG_LL=Y&lt;br /&gt;
* CONFIG_EARLY_PRINTK=Y&lt;br /&gt;
&lt;br /&gt;
Compile and install your kernel.&lt;br /&gt;
&lt;br /&gt;
Now, kernel printk messages should be emitted to the serial port, during early boot, much sooner and closer to their actual creation, than without these options.&lt;br /&gt;
&lt;br /&gt;
=== Finding the time to decompress the kernel ===&lt;br /&gt;
On the ARM architecture, during kernel decompression the decompressor code writes information to&lt;br /&gt;
the same line of output for the start and end of the operation.  Since grabserial uses line terminations&lt;br /&gt;
as part of time measurements, grabserial without any special options would not be able to measure this&lt;br /&gt;
operation.&lt;br /&gt;
&lt;br /&gt;
The line starts with &amp;quot;Uncompressing Linux...&amp;quot;.  When the decompression is complete, the code&lt;br /&gt;
writes on the same line: &amp;quot;done, booting the kernel&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You can use the grabserial &amp;quot;-i&amp;quot; option to measure the time a particular string appears on the port,&lt;br /&gt;
whether or not the string is at the beginning of the line.  By using both the base time pattern matching,&lt;br /&gt;
and the &amp;quot;instant time&amp;quot; (-i) pattern matching, you can determine the time for the decompression operation.&lt;br /&gt;
&lt;br /&gt;
By specifing &amp;quot;Uncompressing Linux&amp;quot; as the base &lt;br /&gt;
&lt;br /&gt;
An example follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ../grabserial -v -d /dev/ttyUSB1 -e 30 -t -m &amp;quot;Uncompressing Linux&amp;quot; -i &amp;quot;done,&amp;quot;&lt;br /&gt;
Opening serial port /dev/ttyUSB1&lt;br /&gt;
115200:8N1:xonxoff=0:rtcdtc=0&lt;br /&gt;
Program will end in 30 seconds&lt;br /&gt;
Printing timing information for each line&lt;br /&gt;
Matching pattern 'Uncompressing Linux' to set base time&lt;br /&gt;
Instant pattern 'done,' to set base time&lt;br /&gt;
Use Control-C to stop...&lt;br /&gt;
[0.000001 0.000001] &lt;br /&gt;
[0.000490 0.000489] &lt;br /&gt;
[0.000539 0.000049] Texas Instruments X-Loader 1.41 (Sep  1 2010 - 13:43:00)&lt;br /&gt;
[0.296009 0.295470] mmc read: Invalid size&lt;br /&gt;
[0.298986 0.002977] Starting OS Bootloader from MMC/SD1 ...&lt;br /&gt;
[0.312080 0.013094] &lt;br /&gt;
[0.312176 0.000096] &lt;br /&gt;
[0.312219 0.000043] U-Boot 1.1.4-gcebe815a-dirty (Aug 16 2010 - 10:34:46)&lt;br /&gt;
[0.317143 0.004924] &lt;br /&gt;
[0.317189 0.000046] Load address: 0x80e80000&lt;br /&gt;
[0.319251 0.002062] DRAM:  512 MB&lt;br /&gt;
[0.320312 0.001061] Flash:  0 kB&lt;br /&gt;
[0.360946 0.040634] *** Warning - bad CRC, using default environment&lt;br /&gt;
[0.366068 0.005122] &lt;br /&gt;
[0.385933 0.019865] In:    serial&lt;br /&gt;
[0.388700 0.002767] Out:   serial&lt;br /&gt;
[0.390314 0.001614] Err:   serial&lt;br /&gt;
[0.764960 0.374646] Net:   KS8851SNL&lt;br /&gt;
[0.769953 0.004993] Hit any key to stop autoboot:  0 &lt;br /&gt;
[0.773507 0.003554] PANDA # &lt;br /&gt;
[0.774202 0.000695] PANDA #  &lt;br /&gt;
[1.317316 0.543114] PANDA #  &lt;br /&gt;
[2.320424 1.003108] PANDA # setenv bootargs 'console=ttyO2,115200n8 mem=463M root=/dev/mmcblk0p3 rw rootwait init=/linuxrc'&lt;br /&gt;
[3.333767 1.013343] PANDA # mmcinit 0;fatload mmc 0 0x80000000 uimage.new; bootm 80000000&lt;br /&gt;
[6.942999 3.609232] mmc read: Invalid size&lt;br /&gt;
[6.945956 0.002957] &lt;br /&gt;
[6.946009 0.000053] 2733352 bytes read&lt;br /&gt;
[6.948932 0.002923] ## Booting image at 80000000 ...&lt;br /&gt;
[6.951980 0.003048]    Image Name:   Linux-2.6.35-g6d019da-dirty&lt;br /&gt;
[6.955984 0.004004]    Image Type:   ARM Linux Kernel Image (uncompressed)&lt;br /&gt;
[6.960935 0.004951]    Data Size:    2733288 Bytes =  2.6 MB&lt;br /&gt;
[6.964110 0.003175]    Load Address: 80008000&lt;br /&gt;
[6.966931 0.002821]    Entry Point:  80008000&lt;br /&gt;
[6.969036 0.002105]    Verifying Checksum ... OK&lt;br /&gt;
[8.366958 1.397922] OK&lt;br /&gt;
[8.368996 0.002038] &lt;br /&gt;
[8.369044 0.000048] Starting kernel ...&lt;br /&gt;
[8.370096 0.001052] &lt;br /&gt;
[8.370934 0.000838] Uncompressing Linux... done, booting the kernel.&lt;br /&gt;
[1.518068 1.518068] Linux version 2.6.35-g6d019da-dirty (danders@ccd-dev) (gcc version 4.3.3 (GCC) ) #11 SMP PREEMPT Wed Sep 1 16:11:03 CDT 2010&lt;br /&gt;
...&lt;br /&gt;
[6.064032 0.003247] Freeing init memory: 172K&lt;br /&gt;
[6.170598 0.106566] init started: BusyBox v1.13.2 (2010-04-06 10:34:20 CDT)&lt;br /&gt;
&lt;br /&gt;
The instantpat: &amp;quot;done,&amp;quot;, was matched at 0.421018&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>Mysli</name></author>	</entry>

	<entry>
		<id>http://elinux.org/BeagleBoard_with_Arduino</id>
		<title>BeagleBoard with Arduino</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/BeagleBoard_with_Arduino"/>
				<updated>2012-01-08T13:59:54Z</updated>
		
		<summary type="html">&lt;p&gt;Mysli: FTDI driver function checked and documented&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting the Arduino working on the BeagleBoard or BeagleBoard xM (Probably applies to the PandaBoard and similar platforms) ==&lt;br /&gt;
&lt;br /&gt;
For recent Arduinos based on the Atmel USB chip (like the Arduino Uno) you will need to install the cdc-acm driver.  You can do this in Angstrom using the following command:&lt;br /&gt;
&lt;br /&gt;
'''opkg install kernel-module-cdc-acm&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
Your Arduino should then appear in /dev under the name ttyACM0 (note that the name is not the same as in OSX where it shows as tty.usbmodemXXXX)&lt;br /&gt;
&lt;br /&gt;
For older Arduinos based on the FTDI chip, this is the driver to install :&lt;br /&gt;
&lt;br /&gt;
'''opkg install kernel-module-ftdi-sio'''&lt;br /&gt;
&lt;br /&gt;
Your Arduino should then appear in /dev under the name ttyUSB0.&lt;br /&gt;
&lt;br /&gt;
A simple way to receive values from Arduino: cat /dev/ttyACM0 respectively cat /dev/ttyUSB0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:BeagleBoard]]&lt;br /&gt;
[[Category:Arduino]]&lt;/div&gt;</summary>
		<author><name>Mysli</name></author>	</entry>

	</feed>