<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de-AT">
	<id>https://becomwiki.live.md-websolutions.com/index.php?action=history&amp;feed=atom&amp;title=EXT-SBC-i.MX51-COMM%2FDISP</id>
	<title>EXT-SBC-i.MX51-COMM/DISP - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://becomwiki.live.md-websolutions.com/index.php?action=history&amp;feed=atom&amp;title=EXT-SBC-i.MX51-COMM%2FDISP"/>
	<link rel="alternate" type="text/html" href="https://becomwiki.live.md-websolutions.com/index.php?title=EXT-SBC-i.MX51-COMM/DISP&amp;action=history"/>
	<updated>2026-05-13T14:12:43Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in BECOM Systems Support</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://becomwiki.live.md-websolutions.com/index.php?title=EXT-SBC-i.MX51-COMM/DISP&amp;diff=464&amp;oldid=prev</id>
		<title>Peter: 1 Version importiert</title>
		<link rel="alternate" type="text/html" href="https://becomwiki.live.md-websolutions.com/index.php?title=EXT-SBC-i.MX51-COMM/DISP&amp;diff=464&amp;oldid=prev"/>
		<updated>2023-10-31T08:03:11Z</updated>

		<summary type="html">&lt;p&gt;1 Version importiert&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de-AT&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 31. Oktober 2023, 10:03 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;de-AT&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(kein Unterschied)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Peter</name></author>
	</entry>
	<entry>
		<id>https://becomwiki.live.md-websolutions.com/index.php?title=EXT-SBC-i.MX51-COMM/DISP&amp;diff=463&amp;oldid=prev</id>
		<title>en&gt;Peter: 1 Version importiert</title>
		<link rel="alternate" type="text/html" href="https://becomwiki.live.md-websolutions.com/index.php?title=EXT-SBC-i.MX51-COMM/DISP&amp;diff=463&amp;oldid=prev"/>
		<updated>2023-08-22T19:35:53Z</updated>

		<summary type="html">&lt;p&gt;1 Version importiert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;EXT-SBC-i.MX51-DISP&amp;#039;&amp;#039;&amp;#039; extension board features&lt;br /&gt;
* Display connectors for 1 WVGA TFT from Emerging Displays and 1 LVDS XGA TFT from Toshiba&lt;br /&gt;
* Camera connector for OV2655 UXGA camera from OmniVision (HW Rev. 1.0)&lt;br /&gt;
* Camera connector for Bluetechnix Image Sensor Module (HW Rev. 1.1 and above)&lt;br /&gt;
&lt;br /&gt;
Additional features of the &amp;#039;&amp;#039;&amp;#039;EXT-SBC-i.MX51-COMM&amp;#039;&amp;#039;&amp;#039; extension board:&lt;br /&gt;
* Bluetooth SPP module from Intel (former Infineon)&lt;br /&gt;
* GSM/GPRS module from ublox and SIM card slot&lt;br /&gt;
* GPS module from ublox&lt;br /&gt;
&lt;br /&gt;
All parts are well supported by the provided GNU/Linux board support package for the SBC-i.MX51.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See the [[Additional Equipment (SBC-i.MX51)|Additional Equipment]] page for equipment you may need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Emerging Display ET0500G0DH6 =&lt;br /&gt;
&lt;br /&gt;
;Type&lt;br /&gt;
:TFT-LCD with touch screen&lt;br /&gt;
;Resolution&lt;br /&gt;
:800x480&lt;br /&gt;
;Orientation&lt;br /&gt;
:Landscape&lt;br /&gt;
&lt;br /&gt;
== Enabling in Linux ==&lt;br /&gt;
To use the TFT as primary display, you have to supply an additional Linux kernel argument. You can configure this easily in the Redboot boot loader:&lt;br /&gt;
&lt;br /&gt;
When Redboot is loading, press {{sc|Ctrl+c}} to stop the boot process. Now add&lt;br /&gt;
 display=emerging&lt;br /&gt;
to the kernel options (in the boot script), e.g.&lt;br /&gt;
 e -c &amp;quot;console=ttymxc0,115200 root=/dev/mmcblk0p1 rw debug noinitrd psplash=false rootdelay=1 &amp;lt;span style=&amp;quot;color:#B00000&amp;quot;&amp;gt;display=emerging&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then reset the board (or type &amp;#039;&amp;#039;reset&amp;#039;&amp;#039; in Redboot), and the Linux kernel will automatically use the Emerging display as primary screen.&lt;br /&gt;
&lt;br /&gt;
== Test in Linux ==&lt;br /&gt;
After Linux boot, you should see the login prompt on the screen (console image).&lt;br /&gt;
&lt;br /&gt;
== Touch screen calibration ==&lt;br /&gt;
In the &amp;#039;&amp;#039;sbc-imx51-qtembedded-image&amp;#039;&amp;#039;, the application&lt;br /&gt;
 ts_calibrate&lt;br /&gt;
is included. Execute it to calibrate the touch screen.&lt;br /&gt;
&lt;br /&gt;
== Backlight intensity ==&lt;br /&gt;
Backlight intensity is regulated by the PWM backlight driver. Write any value between 0 (dark) and 255 (brightest) to the file&lt;br /&gt;
 echo 255 &amp;gt; /sys/class/backlight/pwm-backlight/brightness&lt;br /&gt;
To get the current brightness, write&lt;br /&gt;
 cat /sys/class/backlight/pwm-backlight/actual_brightness&lt;br /&gt;
&lt;br /&gt;
== Qt Embedded demo application ==&lt;br /&gt;
If you are using the &amp;#039;&amp;#039;sbc-imx51-qtembedded-image&amp;#039;&amp;#039;, there&amp;#039;s a small demo application that lets you switch on and off the LEDs of the SBC via buttons on the display.&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
*Calibrate your touch screen, as specified earlier&lt;br /&gt;
*Set a variable so that Qt takes the touch screen as main input&lt;br /&gt;
 export QWS_MOUSE_PROTO=TsLib:/dev/input/touchscreen0&lt;br /&gt;
*Execute the demo application&lt;br /&gt;
 /usr/bin/qtopia/demos/sbcled/sbcled -qws&lt;br /&gt;
&lt;br /&gt;
= Toshiba display LT084AC37100 (LVDS) =&lt;br /&gt;
&lt;br /&gt;
;Type&lt;br /&gt;
:TFT-LCD with touch screen&lt;br /&gt;
;Resolution&lt;br /&gt;
:1024x768&lt;br /&gt;
;Orientation&lt;br /&gt;
:Landscape&lt;br /&gt;
&lt;br /&gt;
== Connections ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SBC HW Rev. 2.1 and COMM adapter HW Rev. 1.0&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Connect the 6-pin flat cable to the COMM adapter (connector X2).&lt;br /&gt;
*Connect the data cable to connector X1.&lt;br /&gt;
*Connect the 4-pin flat cable (touch screen) to connector X4.&lt;br /&gt;
*Connect display power (&amp;#039;&amp;#039;&amp;#039;12V DC&amp;#039;&amp;#039;&amp;#039;):&lt;br /&gt;
**Either supply directly on connector X3, whereas the 12V pin is the one nearest to X4, and the GND pin is the opposite one. Leave the one in the middle unconnected.&lt;br /&gt;
**You may connect X3 on the COMM adapter to X18 on the SBC board. The pin nearest to X4 (COMM) must be connected to the pin nearest to the power plug (SBC). &amp;#039;&amp;#039;&amp;#039;You must supply the SBC board now with 12V DC exactly!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SBC HW Rev. 2.1 and COMM adapter HW Rev. 1.1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*Connect the 6-pin flat cable to the COMM adapter (connector X2).&lt;br /&gt;
*Connect the data cable to connector X1.&lt;br /&gt;
*Connect the 4-pin flat cable (touch screen) to connector X4.&lt;br /&gt;
*Connect display power (&amp;#039;&amp;#039;&amp;#039;12V DC&amp;#039;&amp;#039;&amp;#039;):&lt;br /&gt;
**Either supply directly on connector X3, whereas the 12V and GND pins are labeled. Leave the one in the middle unconnected.&lt;br /&gt;
**You may connect X3 on the COMM adapter to X18 on the SBC board. The 12V pin on the COMM/DISP must be connected to the pin nearest to the power plug (SBC). &amp;#039;&amp;#039;&amp;#039;You must supply the SBC board now with 12V DC exactly!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Enabling in Linux ==&lt;br /&gt;
To use the TFT as primary display, you have to supply an additional Linux kernel argument. You can configure this easily in the Redboot boot loader:&lt;br /&gt;
&lt;br /&gt;
When Redboot is loading, press {{sc|Ctrl+c}} to stop the boot process. Now add&lt;br /&gt;
 display=toshiba&lt;br /&gt;
to the kernel options (in the boot script), e.g.&lt;br /&gt;
 e -c &amp;quot;console=ttymxc0,115200 root=/dev/mmcblk0p1 rw debug noinitrd psplash=false rootdelay=1 &amp;lt;span style=&amp;quot;color:#B00000&amp;quot;&amp;gt;display=toshiba&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then reset the board (or type &amp;#039;&amp;#039;reset&amp;#039;&amp;#039; in Redboot), and the Linux kernel will automatically use the Toshiba display as primary screen.&lt;br /&gt;
&lt;br /&gt;
Further steps are identical to the Emerging display, so please see above!&lt;br /&gt;
&lt;br /&gt;
= OV2655 (HW Rev. 1.0 only) =&lt;br /&gt;
&lt;br /&gt;
;Type&lt;br /&gt;
:Image sensor (camera)&lt;br /&gt;
;Resolution&lt;br /&gt;
:2 megapixel&lt;br /&gt;
;Orientation&lt;br /&gt;
:Landscape&lt;br /&gt;
&lt;br /&gt;
== Enabling in Linux ==&lt;br /&gt;
&lt;br /&gt;
NOTE: The OV2655 driver from our GIT is incomplete, it is missing the actual camera initialization sequences. This code is under NDA by OmniVision. Please contact us if you want to use the camera and need the full device driver sources.&lt;br /&gt;
&lt;br /&gt;
The Linux device driver currently supports the following camera modes:&lt;br /&gt;
* 800x600, 25 fps&lt;br /&gt;
* 640x480, 25 fps&lt;br /&gt;
&lt;br /&gt;
Kernel configuration:&lt;br /&gt;
 Device Drivers  ---&amp;gt;&lt;br /&gt;
   Multimedia devices  ---&amp;gt;&lt;br /&gt;
     &amp;lt;*&amp;gt; Video For Linux&lt;br /&gt;
     [*]   Enable Video For Linux API 1 (DEPRECATED)&lt;br /&gt;
     [*] Customize analog and hybrid tuner modules to build  ---&amp;gt;&lt;br /&gt;
     [*] Video capture adapters  ---&amp;gt;&lt;br /&gt;
       &amp;lt;M&amp;gt;   MXC Video For Linux Camera&lt;br /&gt;
       MXC Camera/V4L2 PRP Features support  ---&amp;gt;&lt;br /&gt;
         &amp;lt;M&amp;gt;   OmniVision ov2655 camera support&lt;br /&gt;
         &amp;lt;M&amp;gt; Pre-Processor VF SDC library&lt;br /&gt;
         &amp;lt;M&amp;gt; Pre-processor Encoder library&lt;br /&gt;
       &amp;lt;*&amp;gt;   MXC Video For Linux Video Output&lt;br /&gt;
       [*]     IPU v4l2 support&lt;br /&gt;
&lt;br /&gt;
== Test in Linux ==&lt;br /&gt;
&lt;br /&gt;
We will set up an overlay so that you can see the camera picture on the HDMI monitor connected to the SBC-i.MX51. You need the &amp;#039;&amp;#039;imx-test&amp;#039;&amp;#039; package which is installed in SBC Linux images by default.&lt;br /&gt;
&lt;br /&gt;
*Load the camera kernel module:&lt;br /&gt;
 modprobe ov2655_camera&lt;br /&gt;
*Load the i.MX capture kernel module:&lt;br /&gt;
 modprobe mxc_v4l2_capture&lt;br /&gt;
*Start the unit test for overlay:&lt;br /&gt;
 /unit_tests/mxc_v4l2_overlay.out -iw 800 -ih 600 -ow 800 -oh 600 -fr 25 -fg&lt;br /&gt;
*Now you should see the video stream from the camera on the monitor. Stop overlay by pressing {{sc|Ctrl+c}}.&lt;br /&gt;
&lt;br /&gt;
= ISM-MT9M131 camera module (HW Rev. 1.2 and above) =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;color:rgb(204, 0, 0)&amp;quot;&amp;gt;NOTE! You need an EXT-SBC-i.MX51-COMM/DISP &amp;amp;ge;V1.2 extension board, V1.1 will not work.&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Type&lt;br /&gt;
:Image sensor (camera)&lt;br /&gt;
;Resolution&lt;br /&gt;
:1280x1024&lt;br /&gt;
;Orientation&lt;br /&gt;
:Landscape&lt;br /&gt;
&lt;br /&gt;
The module manufactured by Bluetechnix features an Aptina MT9M131 camera SOC (System-on-a-Chip). See https://datasheets.becom-group.com/goto/ISM/ISM-MT9M131/ for the data sheet.&lt;br /&gt;
&lt;br /&gt;
There is a Linux device driver that allows for live view and capturing. It employs the RGB565-mode of the camera. Some parameters may be set by module parameters.&lt;br /&gt;
&lt;br /&gt;
== Enabling in Linux ==&lt;br /&gt;
&lt;br /&gt;
Kernel configuration:&lt;br /&gt;
 Device Drivers  ---&amp;gt;&lt;br /&gt;
   Multimedia devices  ---&amp;gt;&lt;br /&gt;
     &amp;lt;*&amp;gt; Video For Linux&lt;br /&gt;
     [*]   Enable Video For Linux API 1 (DEPRECATED)&lt;br /&gt;
     [*] Customize analog and hybrid tuner modules to build  ---&amp;gt;&lt;br /&gt;
     [*] Video capture adapters  ---&amp;gt;&lt;br /&gt;
       &amp;lt;M&amp;gt;   MXC Video For Linux Camera&lt;br /&gt;
       MXC Camera/V4L2 PRP Features support  ---&amp;gt;&lt;br /&gt;
         &amp;lt;M&amp;gt;   Bluetechnix ISM-MT9M131 camera module support&lt;br /&gt;
         &amp;lt;M&amp;gt; Pre-Processor VF SDC library&lt;br /&gt;
         &amp;lt;M&amp;gt; Pre-processor Encoder library&lt;br /&gt;
         &amp;lt;M&amp;gt; IPU CSI Encoder library&lt;br /&gt;
       &amp;lt;*&amp;gt;   MXC Video For Linux Video Output&lt;br /&gt;
       [*]     IPU v4l2 support&lt;br /&gt;
&lt;br /&gt;
== Test in Linux ==&lt;br /&gt;
&lt;br /&gt;
You need the &amp;#039;&amp;#039;imx-test&amp;#039;&amp;#039; package which is installed in SBC Linux images by default.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Live view (camera to HDMI)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*Load the camera kernel module:&lt;br /&gt;
 modprobe ism_mt9m131_camera sensorwidth=1280 sensorheight=1024&lt;br /&gt;
*Load the i.MX capture kernel module:&lt;br /&gt;
 modprobe mxc_v4l2_capture&lt;br /&gt;
*Start live view:&lt;br /&gt;
 /unit_tests/mxc_v4l2_overlay.out -iw 1024 -ow 1024 -ih 768 -oh 768 -fg -fr 25&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Capturing raw stream&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
There is also a unit test for capturing the raw RGB565 stream to a file.&lt;br /&gt;
&lt;br /&gt;
*Load the camera kernel module.&lt;br /&gt;
 modprobe ism_mt9m131_camera&lt;br /&gt;
*Load the i.MX capture kernel module:&lt;br /&gt;
 modprobe mxc_v4l2_capture&lt;br /&gt;
*Capture 100 frames and save to a file (Note that /var/volatile is a file system in RAM):&lt;br /&gt;
 cd /var/volatile&lt;br /&gt;
 /unit_tests/mxc_v4l2_capture.out -iw 1024 -ow 1024 -ih 768 -oh 768 -fr 25 /var/volatile/video.out&lt;br /&gt;
*Transfer &amp;#039;&amp;#039;video.out&amp;#039;&amp;#039; to your PC where the &amp;#039;&amp;#039;mplayer&amp;#039;&amp;#039; is installed.&lt;br /&gt;
*Play it with &amp;#039;&amp;#039;mplayer&amp;#039;&amp;#039;&lt;br /&gt;
 mplayer -demuxer rawvideo -rawvideo fps=25:w=1024:h=768 video.out&lt;br /&gt;
&lt;br /&gt;
== Additional information ==&lt;br /&gt;
&lt;br /&gt;
;Kernel module parameters&lt;br /&gt;
:The following kernel parameters may be used to initialize the camera.&lt;br /&gt;
:E.g., type &amp;#039;&amp;#039;modprobe ism_mt9m131_camera testpattern=7&amp;#039;&amp;#039; to enable a test pattern.&lt;br /&gt;
&lt;br /&gt;
:testpattern=X (Test pattern: 0=disable (default), 1..6=various solid colors, 7=color bar)&lt;br /&gt;
:sensorwidth=X (Sensor width, default 1280)&lt;br /&gt;
:sensorheight=X (Sensor height, default 1024)&lt;br /&gt;
&lt;br /&gt;
;Sensor size and frame rate&lt;br /&gt;
:Note that the size of the sensor is only set by loading the module with respective parameters. The window size of the sensor can not be altered by parameters to &amp;#039;&amp;#039;mxc_v4l2_capture&amp;#039;&amp;#039; or &amp;#039;&amp;#039;mxc_v4l2_overlay&amp;#039;&amp;#039; unit test applications. The frame rate - on the other size - can be altered by these applications (and hence, through the V4L2 frame work).&lt;br /&gt;
&lt;br /&gt;
;Frame rates measured during live view&lt;br /&gt;
:(We presume good light conditions. The MT9M131 SOC automatically decreases the frame rate when light conditions are not good.)&lt;br /&gt;
&lt;br /&gt;
:1280x1024: 16 fps&lt;br /&gt;
:1024x768: 25 fps&lt;br /&gt;
:800x600: 26 fps&lt;br /&gt;
:640x480: 27 fps&lt;br /&gt;
&lt;br /&gt;
= ISM-MT9M024 camera module (HW Rev. 1.2 and above) =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;color:rgb(204, 0, 0)&amp;quot;&amp;gt;NOTE! You need an EXT-SBC-i.MX51-COMM/DISP &amp;amp;ge;V1.2 extension board, V1.1 will not work.&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Type&lt;br /&gt;
:Image sensor (camera)&lt;br /&gt;
;Resolution&lt;br /&gt;
:1280x768&lt;br /&gt;
;Orientation&lt;br /&gt;
:Landscape&lt;br /&gt;
;Camera types&lt;br /&gt;
:Color (Bayer pattern, i.e., first row GRGR...., second row BGBG...., ....)&lt;br /&gt;
:Monochrome&lt;br /&gt;
:RCCC (Red, Clear, Clear, Clear)&lt;br /&gt;
;Field&lt;br /&gt;
:Automotive&lt;br /&gt;
;Data width&lt;br /&gt;
:12 bit; limited to 10 bit if connected with SBC-i.MX51&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module manufactured by Bluetechnix features an Aptina MT9M024 camera. See https://datasheets.becom-group.com/goto/ISM/ISM-MT9M024/ for the data sheet.&lt;br /&gt;
&lt;br /&gt;
These cameras can only deliver raw data and are missing white balancing, gamma correction, etc. There is only limited support of the i.MX IPU for such raw formats (live view, etc.). &lt;br /&gt;
&lt;br /&gt;
There is a Linux device driver that allows capturing the raw frames. It supports data widths of 8 and 10 bits, and setting various camera parameters and functions.&lt;br /&gt;
&lt;br /&gt;
== Enabling in Linux ==&lt;br /&gt;
&lt;br /&gt;
Kernel configuration:&lt;br /&gt;
 Device Drivers  ---&amp;gt;&lt;br /&gt;
   Multimedia devices  ---&amp;gt;&lt;br /&gt;
     &amp;lt;*&amp;gt; Video For Linux&lt;br /&gt;
     [*]   Enable Video For Linux API 1 (DEPRECATED)&lt;br /&gt;
     [*] Customize analog and hybrid tuner modules to build  ---&amp;gt;&lt;br /&gt;
     [*] Video capture adapters  ---&amp;gt;&lt;br /&gt;
       &amp;lt;M&amp;gt;   MXC Video For Linux Camera&lt;br /&gt;
       MXC Camera/V4L2 PRP Features support  ---&amp;gt;&lt;br /&gt;
         &amp;lt;M&amp;gt;   Bluetechnix ISM-MT9M024 camera module support&lt;br /&gt;
         &amp;lt;M&amp;gt; Pre-Processor VF SDC library&lt;br /&gt;
         &amp;lt;M&amp;gt; Pre-processor Encoder library&lt;br /&gt;
         &amp;lt;M&amp;gt; IPU CSI Encoder library&lt;br /&gt;
       &amp;lt;*&amp;gt;   MXC Video For Linux Video Output&lt;br /&gt;
       [*]     IPU v4l2 support&lt;br /&gt;
&lt;br /&gt;
== Test in Linux (8-bit mode) ==&lt;br /&gt;
&lt;br /&gt;
You need the &amp;#039;&amp;#039;imx-test&amp;#039;&amp;#039; package which is installed in SBC Linux images by default.&lt;br /&gt;
&lt;br /&gt;
*Load the camera kernel module:&lt;br /&gt;
 modprobe ism_mt9m024_camera&lt;br /&gt;
*Load the i.MX capture kernel module:&lt;br /&gt;
 modprobe mxc_v4l2_capture&lt;br /&gt;
*Capture 100 frames and save to a file (Note that /var/volatile is a file system in RAM):&lt;br /&gt;
 cd /var/volatile&lt;br /&gt;
 /unit_tests/capture-mt9m024.out -f &amp;quot;GREY&amp;quot; video.raw&lt;br /&gt;
*If you get an error now (&amp;quot;VIDIOC_DQBUF failed&amp;quot;), unblank your frame buffer before starting &amp;#039;&amp;#039;capture-mt9m024.out&amp;#039;&amp;#039;. (Maybe an IPU driver bug?)&lt;br /&gt;
 echo 0 &amp;gt; /sys/class/graphics/fb0/blank&lt;br /&gt;
*If you transfer &amp;#039;&amp;#039;video.raw&amp;#039;&amp;#039; to your PC where the &amp;#039;&amp;#039;mplayer&amp;#039;&amp;#039; is installed, you can get a first glance of the video by playing it as a grayscale video:&lt;br /&gt;
 mplayer -demuxer rawvideo -rawvideo fps=25:w=1280:h=960:y8 video.raw&lt;br /&gt;
*There is a little application to convert the raw video to an UYVY format:&lt;br /&gt;
 openembedded/recipes/sbc-imx51-support/files/raw2yuv.c&lt;br /&gt;
*Compile it on your PC with:&lt;br /&gt;
 gcc -o raw2yuv raw2yuv.c -lm -O2 -Wall&lt;br /&gt;
*Convert the raw image stream (RGB BAYER type):&lt;br /&gt;
 ./raw2yuv BAYER 1280 960 0.8 1.0 0.6 1 video.raw video.yuv&lt;br /&gt;
*Play it with &amp;#039;&amp;#039;mplayer&amp;#039;&amp;#039;&lt;br /&gt;
 mplayer -demuxer rawvideo -rawvideo fps=25:w=1280:h=960:uyvy video.yuv&lt;br /&gt;
(Note that the actual frame rate is told you by the &amp;#039;&amp;#039;capture-mt9m024.out&amp;#039;&amp;#039; application after capturing.)&lt;br /&gt;
&lt;br /&gt;
== Test in Linux (10-bit mode) ==&lt;br /&gt;
&lt;br /&gt;
*Load the camera kernel module. In case it is already loaded, we unload it in the first instance:&lt;br /&gt;
 modprobe -r ism_mt9m024_camera&lt;br /&gt;
 modprobe ism_mt9m024_camera datawidth=10&lt;br /&gt;
*Load the i.MX capture kernel module:&lt;br /&gt;
 modprobe mxc_v4l2_capture&lt;br /&gt;
*Capture 100 frames and save to a file (Note that /var/volatile is a file system in RAM):&lt;br /&gt;
 cd /var/volatile&lt;br /&gt;
 /unit_tests/capture-mt9m024.out -f &amp;quot;Y16 &amp;quot; video.raw&lt;br /&gt;
*If you get an error now (&amp;quot;VIDIOC_DQBUF failed&amp;quot;), unblank your frame buffer before starting &amp;#039;&amp;#039;capture-mt9m024.out&amp;#039;&amp;#039;. (Maybe an IPU driver bug?)&lt;br /&gt;
 echo 0 &amp;gt; /sys/class/graphics/fb0/blank&lt;br /&gt;
*Transfer &amp;#039;&amp;#039;video.raw&amp;#039;&amp;#039; to your PC where the &amp;#039;&amp;#039;mplayer&amp;#039;&amp;#039; is installed.&lt;br /&gt;
*There is a little application to convert the raw video to an UYVY format:&lt;br /&gt;
 openembedded/recipes/sbc-imx51-support/files/raw2yuv.c&lt;br /&gt;
*Compile it on your PC with:&lt;br /&gt;
 gcc -o raw2yuv raw2yuv.c -lm -O2 -Wall&lt;br /&gt;
*Convert the raw image stream (RGB BAYER type):&lt;br /&gt;
 ./raw2yuv BAYER 1280 960 0.8 1.0 0.6 2 video.raw video.yuv&lt;br /&gt;
*Play it with &amp;#039;&amp;#039;mplayer&amp;#039;&amp;#039;&lt;br /&gt;
 mplayer -demuxer rawvideo -rawvideo fps=25:w=1280:h=960:uyvy video.yuv&lt;br /&gt;
(Note that the actual frame rate is told you by the &amp;#039;&amp;#039;capture-mt9m024.out&amp;#039;&amp;#039; application after capturing.)&lt;br /&gt;
&lt;br /&gt;
== Additional information ==&lt;br /&gt;
&lt;br /&gt;
;Kernel module parameters&lt;br /&gt;
:The following kernel parameters may be used to initialize the camera.&lt;br /&gt;
:E.g., type &amp;#039;&amp;#039;modprobe ism_mt9m024_camera testpattern=2&amp;#039;&amp;#039; to enable a test pattern.&lt;br /&gt;
&lt;br /&gt;
:testpattern=X (Test pattern: 0=disable (default), 1=solid color, 2=color bar, 3=fade-to-gray color bar, 4=walking 1s)&lt;br /&gt;
:autoexposure=X (Auto exposure: 0=disable, 1=enable (default))&lt;br /&gt;
:hdrmode=X (High dynamic range mode: 0=disable (default), 1=enable)&lt;br /&gt;
:sensorwidth=X (Sensor width, default 1280)&lt;br /&gt;
:sensorheight=X (Sensor height, default 960)&lt;br /&gt;
:datawidth=X (Data width: 8 (default), 10)&lt;br /&gt;
&lt;br /&gt;
;capture-mt9m024.out application&lt;br /&gt;
:Getting help: Type &amp;#039;&amp;#039;./capture-mt9m024.out -help&amp;#039;&amp;#039; to see the argument list&lt;br /&gt;
:The application is meant as a demo application. It can only save the captured raw stream to a file. It is meant a basis for your development - wherever you want to have the video data...&lt;br /&gt;
:Default settings are:&lt;br /&gt;
 int g_in_width = 1280;&lt;br /&gt;
 int g_in_height = 960;&lt;br /&gt;
 int g_out_width = 1280;&lt;br /&gt;
 int g_out_height = 960;&lt;br /&gt;
 int g_top = 2;&lt;br /&gt;
 int g_left = 0;&lt;br /&gt;
 int g_input = 1;&lt;br /&gt;
 int g_capture_count = 100;&lt;br /&gt;
 int g_rotate = 0;&lt;br /&gt;
 int g_cap_fmt = V4L2_PIX_FMT_GREY;&lt;br /&gt;
 int g_camera_framerate = 25;&lt;br /&gt;
 int g_extra_pixel = 0;&lt;br /&gt;
 int g_capture_mode = 0;&lt;br /&gt;
:Use pixel format &amp;#039;&amp;#039;&amp;quot;Y16 &amp;quot;&amp;#039;&amp;#039; for 16 bits per pixel (camera data width: 10 bits)&lt;br /&gt;
:Use pixel format &amp;#039;&amp;#039;&amp;quot;GREY&amp;quot;&amp;#039;&amp;#039; for 8 bits per pixel (camera data width: 8 bits)&lt;br /&gt;
&lt;br /&gt;
; Windowing&lt;br /&gt;
:You may specify width, height, left, and top values of the captured picture. E.g., to capture VGA size,&lt;br /&gt;
 ./capture-mt9m024.out -iw 640 -ow 640 -ih 480 -oh 480 -l 320 -t 242 [-f &amp;quot;Y16 &amp;quot;] video.raw&lt;br /&gt;
:(Note that the first two lines received by the camera contain statistics information, we usually cut them out of the captured picture by adding 2 to the top offset.)&lt;br /&gt;
: Always take the same values for -iw and -ow, as well as for -ih and -oh.&lt;br /&gt;
: Always choose even values.&lt;br /&gt;
&lt;br /&gt;
;raw2yuv application&lt;br /&gt;
:Usage: ./raw2yuv BAYER &amp;lt;pixel-width&amp;gt; &amp;lt;pixel-height&amp;gt; &amp;lt;gammared&amp;gt; &amp;lt;gammagreen&amp;gt; &amp;lt;gammablue&amp;gt; &amp;lt;bytes-per-pixel&amp;gt; &amp;lt;in-file&amp;gt; &amp;lt;out-file&amp;gt;&lt;br /&gt;
:Values for gamma vary; you may try 0.8, 1.0, and 0.6 first.&lt;br /&gt;
&lt;br /&gt;
= Bluetooth module eUniStone PBA31308/2 SPP-AT =&lt;br /&gt;
&lt;br /&gt;
This Bluetooth module is capable of AT-commands communication and the Bluetooth SPP (Serial Port Profile).&lt;br /&gt;
&lt;br /&gt;
See https://www.infineon.com/cms/en/product/channel.html?channel=db3a30431ed1d7b2011f038697c5736c&amp;amp;tab=2 for the data sheet and a reference for all AT commands.&lt;br /&gt;
&lt;br /&gt;
==Enabling in Linux==&lt;br /&gt;
Configure the Linux kernel with the following configuration options (It&amp;#039;s already enabled in the default configuration).&lt;br /&gt;
 Device Drivers  ---&amp;gt;&lt;br /&gt;
   MXC support drivers  ---&amp;gt;&lt;br /&gt;
     MXC Bluetooth support  ---&amp;gt;&lt;br /&gt;
       &amp;lt;M&amp;gt; MXC Bluetooth support&lt;br /&gt;
&lt;br /&gt;
==Establishing a serial channel over Bluetooth==&lt;br /&gt;
We assume that you have a PC with Bluetooth adapter ready. We used the Ubuntu operating system on this PC to test the Bluetooth connection. We prepend individual steps with the keywords [SBC] or [PC] to make clear on which machine this step must be executed.&lt;br /&gt;
&lt;br /&gt;
*[SBC] After booting the Linux OS on the SBC-i.MX51, setup the &amp;#039;&amp;#039;minicom&amp;#039;&amp;#039; terminal program first. Edit the file&lt;br /&gt;
 /etc/minirc.dfl&lt;br /&gt;
It should look like this:&lt;br /&gt;
 pu port             /dev/ttymxc2&lt;br /&gt;
 pu rtscts           No&lt;br /&gt;
*[SBC] Start &amp;#039;&amp;#039;minicom&amp;#039;&amp;#039; with&lt;br /&gt;
 minicom -o&lt;br /&gt;
*[PC] Now, you need a second serial connection to the SBC, e.g. via an SSH shell.&lt;br /&gt;
*[SBC] Load the kernel module&lt;br /&gt;
 modprobe mxc_bt&lt;br /&gt;
&amp;#039;&amp;#039;minicom&amp;#039;&amp;#039; should output&lt;br /&gt;
 ROK&lt;br /&gt;
from the Bluetooth module.&lt;br /&gt;
*[SBC] In &amp;#039;&amp;#039;minicom&amp;#039;&amp;#039;, enter the following commands which enable security mode, the serial port service and connection auto accept on the Bluetooth module. Note that the Bluetooth module expects a carriage return and a line feed character after each command. In &amp;#039;&amp;#039;minicom&amp;#039;&amp;#039;, type &amp;#039;&amp;#039;Enter&amp;#039;&amp;#039; followed by &amp;#039;&amp;#039;Ctrl-j&amp;#039;&amp;#039; to generate the correct characters. If you paste the commands from this page, we observed that hitting &amp;#039;&amp;#039;Enter&amp;#039;&amp;#039; after pasting works too. You won&amp;#039;t see the characters you typed in &amp;#039;&amp;#039;minicom&amp;#039;&amp;#039;, but you must get an &amp;#039;&amp;#039;OK&amp;#039;&amp;#039; response after each of the commands.&lt;br /&gt;
 AT+JSEC=1,1,1,04,1111&lt;br /&gt;
 AT+JDIS=3&lt;br /&gt;
 AT+JRLS=1101,11,Serial Port,01,000000&lt;br /&gt;
 AT+JAAC=1&lt;br /&gt;
*[PC] Now, in Ubuntu, open a terminal and type:&lt;br /&gt;
 hcitool scan&lt;br /&gt;
You will get a list of all active Bluetooth devices - &amp;#039;&amp;#039;PMB8753-2B&amp;#039;&amp;#039; should be among them.&lt;br /&gt;
 harald@WS-HP4600-35:~$ hcitool scan&lt;br /&gt;
 Scanning ...&lt;br /&gt;
 	00:03:19:06:E0:E3	PMB8753-2B&lt;br /&gt;
*[PC] Tell &amp;#039;&amp;#039;hcitool&amp;#039;&amp;#039; to establish a connection to the module. Use the Bluetooth address you got from the last output.&lt;br /&gt;
 harald@WS-HP4600-35:~$ sudo hcitool cc 00:03:19:06:E0:E3&lt;br /&gt;
The tool will report if an error occurs, else there is no output.&lt;br /&gt;
*[PC] We use the address to get some more information about the module and its services:&lt;br /&gt;
 harald@WS-HP4600-35:~$ sdptool browse 00:03:19:06:E0:E3&lt;br /&gt;
 Browsing 00:03:19:06:E0:E3 ...&lt;br /&gt;
 Service Name: Serial Port&lt;br /&gt;
 Service RecHandle: 0x10000&lt;br /&gt;
 Service Class ID List:&lt;br /&gt;
   &amp;quot;Serial Port&amp;quot; (0x1101)&lt;br /&gt;
 Protocol Descriptor List:&lt;br /&gt;
   &amp;quot;L2CAP&amp;quot; (0x0100)&lt;br /&gt;
   &amp;quot;RFCOMM&amp;quot; (0x0003)&lt;br /&gt;
     Channel: 1&lt;br /&gt;
The information we need is the channel number, which is 1 here.&lt;br /&gt;
*[PC] Now we connect to the RFCOMM service of the Bluetooth module:&lt;br /&gt;
 harald@WS-HP4600-35:~$ sudo rfcomm connect hci0 00:03:19:06:E0:E3 1&lt;br /&gt;
 Connected /dev/rfcomm0 to 00:03:19:06:E0:E3 on channel 1&lt;br /&gt;
 Press CTRL-C for hangup&lt;br /&gt;
So, &amp;#039;&amp;#039;/dev/rfcomm0&amp;#039;&amp;#039; is the character device file for the Bluetooth serial port.&lt;br /&gt;
*[SBC] You can see the following new messages printed in &amp;#039;&amp;#039;minicom&amp;#039;&amp;#039;, the first one is a connect indication:&lt;br /&gt;
 +RCOI=00025B01160A&lt;br /&gt;
 +RCCRCNF=350,0&lt;br /&gt;
*[SBC] Put the Bluetooth module in streaming mode now:&lt;br /&gt;
 AT+JSCR&lt;br /&gt;
*[PC] Finally, we configure &amp;#039;&amp;#039;minicom&amp;#039;&amp;#039; on the PC&lt;br /&gt;
**Start &amp;#039;&amp;#039;sudo minicom -s&amp;#039;&amp;#039;, select device &amp;#039;&amp;#039;/dev/rfcomm0&amp;#039;&amp;#039;, save as default, and quit&lt;br /&gt;
**Then start &amp;#039;&amp;#039;sudo minicom -o&amp;#039;&amp;#039;&lt;br /&gt;
*If you type anything in the &amp;#039;&amp;#039;minicom&amp;#039;&amp;#039; window (either SBC or PC), the other side will receive it. Type {{sc|Ctrl-j}} for a newline.&lt;br /&gt;
&lt;br /&gt;
= GSM/GPRS module ublox LEON-G100 =&lt;br /&gt;
&lt;br /&gt;
== Enabling in Linux ==&lt;br /&gt;
&lt;br /&gt;
There is a small device driver that turns on the module and resets it properly:&lt;br /&gt;
 Device Drivers  ---&amp;gt; &lt;br /&gt;
   SBC-i.MX51 support drivers  ---&amp;gt;&lt;br /&gt;
     GSM/GPRS support  ---&amp;gt;&lt;br /&gt;
       &amp;lt;M&amp;gt; SBC-i.MX51 GSM/GPRS support&lt;br /&gt;
It is enabled in the default kernel configuration.&lt;br /&gt;
&lt;br /&gt;
== Testing in Linux ==&lt;br /&gt;
&lt;br /&gt;
First, load the kernel module:&lt;br /&gt;
 modprobe gsm&lt;br /&gt;
&lt;br /&gt;
We use the program &amp;#039;&amp;#039;minicom&amp;#039;&amp;#039; to test communication with the GSM/GPRS module. For configuration, either create the file&lt;br /&gt;
 /etc/minirc.dfl&lt;br /&gt;
with the following content&lt;br /&gt;
 # Machine-generated file - use &amp;quot;minicom -s&amp;quot; to change parameters.&lt;br /&gt;
 pu port             /dev/ttymxc1&lt;br /&gt;
 pu rtscts           No&lt;br /&gt;
&lt;br /&gt;
Alternatively, start minicom with the &amp;#039;&amp;#039;-s&amp;#039;&amp;#039; parameter, and do the following:&lt;br /&gt;
*Go to &amp;#039;&amp;#039;Serial port setup&amp;#039;&amp;#039; and change &amp;#039;&amp;#039;Serial Device&amp;#039;&amp;#039; to &amp;#039;&amp;#039;/dev/ttymxc1&amp;#039;&amp;#039; (key A).&lt;br /&gt;
*In the same menu, turn off &amp;#039;&amp;#039;Hardware Flow Control&amp;#039;&amp;#039; (key F).&lt;br /&gt;
*Press ENTER to leave the menu.&lt;br /&gt;
*Select &amp;#039;&amp;#039;Save setup as dfl&amp;#039;&amp;#039;.&lt;br /&gt;
*Select &amp;#039;&amp;#039;Exit from Minicom&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
To ensure that communication is working, we start&lt;br /&gt;
 minicom&lt;br /&gt;
and request some information from the module (input bold):&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;AT+CGMI&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 u-blox&lt;br /&gt;
 &lt;br /&gt;
 OK&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;AT+CGMM&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 LEON-G100&lt;br /&gt;
 &lt;br /&gt;
 OK&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;AT+CGMR&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 07.30.03&lt;br /&gt;
 &lt;br /&gt;
 OK&lt;br /&gt;
&lt;br /&gt;
Note that you may reset the GSM/GPRS module at any time by unloading and re-loading the kernel module:&lt;br /&gt;
 modprobe -r gsm&lt;br /&gt;
 modprobe gsm&lt;br /&gt;
&lt;br /&gt;
== Establish an Internet connection with PPPD ==&lt;br /&gt;
&lt;br /&gt;
Now that we have checked the communication with the modem, we demonstrate how to establish an Internet connection.&lt;br /&gt;
*First - if you have not done already - shut down your SBC-i.MX51, remove the COMM adapter, and insert a SIM card on the bottom side. Connect a GSM antenna to connector X8 as well. Then boot up Linux again.&lt;br /&gt;
*Edit the file&lt;br /&gt;
 /etc/chatscripts/ppp&lt;br /&gt;
either directly on the SBC (use &amp;#039;&amp;#039;nano&amp;#039;&amp;#039; or &amp;#039;&amp;#039;vi&amp;#039;&amp;#039;) or in OpenEmbedded&amp;#039;s repository:&lt;br /&gt;
 oe/openembedded/recipes/sbc-imx51-support/files/chat-config&lt;br /&gt;
The file contains the required configuration such as PIN, APN (access point name), and phone number. You have to customize items marked &amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
 ABORT BUSY ABORT &amp;#039;NO CARRIER&amp;#039; ABORT VOICE ABORT &amp;#039;NO DIALTONE&amp;#039; ABORT &amp;#039;NO DIAL TONE&amp;#039; ABORT &amp;#039;NO ANSWER&amp;#039; ABORT DELAYED&lt;br /&gt;
 # modeminit&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;#039;&amp;#039;&amp;lt;/nowiki&amp;gt; AT+CMEE=2&lt;br /&gt;
 TIMEOUT 3&lt;br /&gt;
 OK AT+CPIN?&lt;br /&gt;
 &amp;#039;READY-AT+CPIN=&amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;1234&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;quot;-&amp;#039; &amp;lt;nowiki&amp;gt;&amp;#039;&amp;#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;#039;OK&amp;#039; &amp;#039;ATZ&amp;#039;&lt;br /&gt;
 OK AT&amp;amp;K0&lt;br /&gt;
 TIMEOUT 10&lt;br /&gt;
 &amp;#039;OK&amp;#039; &amp;#039;AT+CGDCONT=1,&amp;quot;IP&amp;quot;,&amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;web.yesss.at&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
 &amp;#039;OK&amp;#039; &amp;#039;ATD&amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;*99#&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 CONNECT \d\c&lt;br /&gt;
 # end of pppconfig stuff&lt;br /&gt;
&lt;br /&gt;
Afterwards, try establishing the connection with the following command. Note that if connection fails, it&amp;#039;s worth that you retry.&lt;br /&gt;
 pppd call ppp nodetach&lt;br /&gt;
If everything works fine, then you will see a similar output:&lt;br /&gt;
 root@sbc-imx51:~# pppd call ppp nodetach&lt;br /&gt;
 abort on (BUSY)&lt;br /&gt;
 abort on (NO CARRIER)&lt;br /&gt;
 abort on (VOICE)&lt;br /&gt;
 abort on (NO DIALTONE)&lt;br /&gt;
 abort on (NO DIAL TONE)&lt;br /&gt;
 abort on (NO ANSWER)&lt;br /&gt;
 abort on (DELAYED)&lt;br /&gt;
 send (AT+CMEE=2^M)&lt;br /&gt;
 timeout set to 3 seconds&lt;br /&gt;
 expect (OK)&lt;br /&gt;
 AT+CMEE=2^M^M&lt;br /&gt;
 OK&lt;br /&gt;
  -- got it&lt;br /&gt;
 &lt;br /&gt;
 send (AT+CPIN?^M)&lt;br /&gt;
 expect (READY)&lt;br /&gt;
 ^M&lt;br /&gt;
 AT+CPIN?^M^M&lt;br /&gt;
 +CPIN: READY&lt;br /&gt;
  -- got it&lt;br /&gt;
 &lt;br /&gt;
 send (^M)&lt;br /&gt;
 expect (OK)&lt;br /&gt;
 ^M&lt;br /&gt;
 ^M&lt;br /&gt;
 OK&lt;br /&gt;
  -- got it&lt;br /&gt;
 &lt;br /&gt;
 send (ATZ^M)&lt;br /&gt;
 expect (OK)&lt;br /&gt;
 ^M&lt;br /&gt;
 ^MATZ^M^M&lt;br /&gt;
 OK&lt;br /&gt;
  -- got it&lt;br /&gt;
 &lt;br /&gt;
 send (AT&amp;amp;K0^M)&lt;br /&gt;
 timeout set to 10 seconds&lt;br /&gt;
 expect (OK)&lt;br /&gt;
 ^M&lt;br /&gt;
 AT&amp;amp;K0^M^M&lt;br /&gt;
 OK&lt;br /&gt;
  -- got it&lt;br /&gt;
 &lt;br /&gt;
 send (AT+CGDCONT=1,&amp;quot;IP&amp;quot;,&amp;quot;web.yesss.at&amp;quot;^M)&lt;br /&gt;
 expect (OK)&lt;br /&gt;
 ^M&lt;br /&gt;
 AT+CGDCONT=1,&amp;quot;IP&amp;quot;,&amp;quot;web.yesss.at&amp;quot;^M^M&lt;br /&gt;
 OK&lt;br /&gt;
  -- got it&lt;br /&gt;
 &lt;br /&gt;
 send (ATD*99#^M)&lt;br /&gt;
 expect (CONNECT)&lt;br /&gt;
 ^M&lt;br /&gt;
 ATD*99#^M^M&lt;br /&gt;
 CONNECT&lt;br /&gt;
  -- got it&lt;br /&gt;
 &lt;br /&gt;
 send (\d)&lt;br /&gt;
 Serial connection established.&lt;br /&gt;
 using channel 2&lt;br /&gt;
 Using interface ppp0&lt;br /&gt;
 Connect: ppp0 &amp;lt;--&amp;gt; /dev/ttymxc1&lt;br /&gt;
 sent [LCP ConfReq id=0x1 &amp;lt;asyncmap 0x0&amp;gt; &amp;lt;magic 0x78d8680c&amp;gt; &amp;lt;pcomp&amp;gt; &amp;lt;accomp&amp;gt;]&lt;br /&gt;
 sent [LCP ConfReq id=0x1 &amp;lt;asyncmap 0x0&amp;gt; &amp;lt;magic 0x78d8680c&amp;gt; &amp;lt;pcomp&amp;gt; &amp;lt;accomp&amp;gt;]&lt;br /&gt;
 sent [LCP ConfReq id=0x1 &amp;lt;asyncmap 0x0&amp;gt; &amp;lt;magic 0x78d8680c&amp;gt; &amp;lt;pcomp&amp;gt; &amp;lt;accomp&amp;gt;]&lt;br /&gt;
 sent [LCP ConfReq id=0x1 &amp;lt;asyncmap 0x0&amp;gt; &amp;lt;magic 0x78d8680c&amp;gt; &amp;lt;pcomp&amp;gt; &amp;lt;accomp&amp;gt;]&lt;br /&gt;
 rcvd [LCP ConfReq id=0x1 &amp;lt;asyncmap 0x0&amp;gt; &amp;lt;magic 0x71dfe05e&amp;gt; &amp;lt;pcomp&amp;gt; &amp;lt;accomp&amp;gt;]&lt;br /&gt;
 sent [LCP ConfAck id=0x1 &amp;lt;asyncmap 0x0&amp;gt; &amp;lt;magic 0x71dfe05e&amp;gt; &amp;lt;pcomp&amp;gt; &amp;lt;accomp&amp;gt;]&lt;br /&gt;
 rcvd [LCP ConfAck id=0x1 &amp;lt;asyncmap 0x0&amp;gt; &amp;lt;magic 0x78d8680c&amp;gt; &amp;lt;pcomp&amp;gt; &amp;lt;accomp&amp;gt;]&lt;br /&gt;
 sent [CCP ConfReq id=0x1 &amp;lt;mppe -H -M -S -L -D -C&amp;gt; &amp;lt;deflate 15&amp;gt; &amp;lt;deflate(old#) 15&amp;gt; &amp;lt;bsd v1 15&amp;gt;]&lt;br /&gt;
 sent [IPCP ConfReq id=0x1 &amp;lt;compress VJ 0f 01&amp;gt; &amp;lt;addr 0.0.0.0&amp;gt; &amp;lt;ms-dns1 0.0.0.0&amp;gt; &amp;lt;ms-dns3 0.0.0.0&amp;gt;]&lt;br /&gt;
 rcvd [LCP ProtRej id=0x2 80 fd 01 01 00 15 12 06 00 00 00 00 1a 04 78 00 18 04 78 00 15]&lt;br /&gt;
 rcvd [IPCP ConfReq id=0x1 &amp;lt;addr 10.114.147.229&amp;gt;]&lt;br /&gt;
 sent [IPCP ConfAck id=0x1 &amp;lt;addr 10.114.147.229&amp;gt;]&lt;br /&gt;
 rcvd [IPCP ConfRej id=0x1 &amp;lt;compress VJ 0f 01&amp;gt;]&lt;br /&gt;
 sent [IPCP ConfReq id=0x2 &amp;lt;addr 0.0.0.0&amp;gt; &amp;lt;ms-dns1 0.0.0.0&amp;gt; &amp;lt;ms-dns3 0.0.0.0&amp;gt;]&lt;br /&gt;
 rcvd [IPCP ConfNak id=0x2 &amp;lt;addr 10.114.147.229&amp;gt; &amp;lt;ms-dns1 194.24.128.100&amp;gt; &amp;lt;ms-dns3 81.3.216.100&amp;gt;]&lt;br /&gt;
 sent [IPCP ConfReq id=0x3 &amp;lt;addr 10.114.147.229&amp;gt; &amp;lt;ms-dns1 194.24.128.100&amp;gt; &amp;lt;ms-dns3 81.3.216.100&amp;gt;]&lt;br /&gt;
 rcvd [IPCP ConfAck id=0x3 &amp;lt;addr 10.114.147.229&amp;gt; &amp;lt;ms-dns1 194.24.128.100&amp;gt; &amp;lt;ms-dns3 81.3.216.100&amp;gt;]&lt;br /&gt;
 replacing old default route to eth0 [192.168.1.1]&lt;br /&gt;
 local  IP address 10.114.147.229&lt;br /&gt;
 remote IP address 10.114.147.229&lt;br /&gt;
 primary   DNS address 194.24.128.100&lt;br /&gt;
 secondary DNS address 81.3.216.100&lt;br /&gt;
 Script /etc/ppp/ip-up started (pid 2701)&lt;br /&gt;
 Script /etc/ppp/ip-up finished (pid 2701), status = 0x0&lt;br /&gt;
&lt;br /&gt;
To disconnect, hit {{sc|Ctrl+c}}.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;What you may try if you don&amp;#039;t get a connection&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*You may test the effects of AT commands directly with&lt;br /&gt;
 minicom -o&lt;br /&gt;
An init sequence could be:&lt;br /&gt;
 AT+CPIN=&amp;quot;1234&amp;quot;&lt;br /&gt;
 ATZ&lt;br /&gt;
 AT&amp;amp;K0&lt;br /&gt;
 ATQ0&lt;br /&gt;
*You may enable verbose error messages instead of the generic &amp;#039;&amp;#039;ERROR&amp;#039;&amp;#039;:&lt;br /&gt;
 AT+CMEE=2&lt;br /&gt;
*Check if your service provider&amp;#039;s signal is available with the +COPS command:&lt;br /&gt;
 AT+COPS=?&lt;br /&gt;
You should see your service provider in the list.&lt;br /&gt;
*If anything goes wrong after seeing the CONNECT from the modem, you may have a look at PPPD&amp;#039;s configuration file&lt;br /&gt;
 /etc/ppp/peers/ppp&lt;br /&gt;
or&lt;br /&gt;
 oe/openembedded/recipes/sbc-imx51-support/files/ppp-config&lt;br /&gt;
respectively within OpenEmbedded&amp;#039;s tree for enabling/disabling compression protocols, settings for default route and DNS servers, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Help resources&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*The ppp and chat man pages, usually installed on Linux PCs:&lt;br /&gt;
 man ppp&lt;br /&gt;
 man chat&lt;br /&gt;
*ublox data sheets and references, available from https://www.u-blox.com/en/download/documents-a-resources/leon-modules-resources.html&lt;br /&gt;
**LEON-G100/200 Data Sheet&lt;br /&gt;
**LEON-G100/200 AT Commands Manual&lt;br /&gt;
&lt;br /&gt;
= GPS module ublox NEO-6Q =&lt;br /&gt;
&lt;br /&gt;
The module&amp;#039;s data sheet is available at https://www.u-blox.com/en/gps-modules/pvt-modules/neo-6-family.html&lt;br /&gt;
&lt;br /&gt;
You may be interested in another document about Linux USB connections and GPS graphical demo: https://www.u-blox.com/en/usb-drivers/linux-driver.html&lt;br /&gt;
&lt;br /&gt;
== Enabling in Linux ==&lt;br /&gt;
&lt;br /&gt;
The module is connected to the i.MX51 via USB. We are using the &amp;#039;&amp;#039;usbserial&amp;#039;&amp;#039; driver to read out data from module. This device driver is built automatically with the default Linux kernel configuration. For your reference, the following kernel configuration is specific to the GPS module:&lt;br /&gt;
&lt;br /&gt;
 Device Drivers  ---&amp;gt;&lt;br /&gt;
   [*] USB support  ---&amp;gt;&lt;br /&gt;
     &amp;lt;M&amp;gt;   USB Serial Converter support  ---&amp;gt;&lt;br /&gt;
       [*]   USB Generic Serial Driver&lt;br /&gt;
   SBC-i.MX51 support drivers  ---&amp;gt;&lt;br /&gt;
     GPS support  ---&amp;gt;&lt;br /&gt;
       &amp;lt;*&amp;gt; SBC-i.MX51 GPS support&lt;br /&gt;
(The first device driver handles communication, the second one enables voltages and configures GPIOs appropriately.)&lt;br /&gt;
&lt;br /&gt;
Proper loading of the &amp;#039;&amp;#039;usbserial&amp;#039;&amp;#039; kernel module is handled by &amp;#039;&amp;#039;udev&amp;#039;&amp;#039; during Linux boot. The udev rules are contained in the following file within your development tree.&lt;br /&gt;
 openembedded/recipes/udev/udev-151/sbc/76-gps.rules&lt;br /&gt;
&lt;br /&gt;
== Test in Linux ==&lt;br /&gt;
&lt;br /&gt;
After the SBC-i.MX51 has booted one of the demo images, check if the GPS module was detected with &amp;#039;&amp;#039;lsusb&amp;#039;&amp;#039;.&lt;br /&gt;
 root@sbc-imx51:~# &amp;#039;&amp;#039;&amp;#039;lsusb&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 [...]&lt;br /&gt;
 Bus 002 Device 005: ID 1546:01a6 U-Blox AG &lt;br /&gt;
 root@sbc-imx51:~#&lt;br /&gt;
You may also get more information, please use the bus and device numbers from the output above:&lt;br /&gt;
 root@sbc-imx51:~# &amp;#039;&amp;#039;&amp;#039;lsusb -s2:5 -v&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 Bus 002 Device 005: ID 1546:01a6 U-Blox AG &lt;br /&gt;
 Device Descriptor:&lt;br /&gt;
   bLength                18&lt;br /&gt;
   bDescriptorType         1&lt;br /&gt;
   bcdUSB               1.10&lt;br /&gt;
   bDeviceClass            2 Communications&lt;br /&gt;
   bDeviceSubClass         0 &lt;br /&gt;
   bDeviceProtocol         0 &lt;br /&gt;
   bMaxPacketSize0        64&lt;br /&gt;
   idVendor           0x1546 U-Blox AG&lt;br /&gt;
   idProduct          0x01a6 &lt;br /&gt;
   bcdDevice            6.02&lt;br /&gt;
   iManufacturer           1 u-blox AG - www.u-blox.com&lt;br /&gt;
   iProduct                2 u-blox 6  -  GPS Receiver&lt;br /&gt;
 [...]&lt;br /&gt;
&lt;br /&gt;
Next, check if the &amp;#039;&amp;#039;usbserial&amp;#039;&amp;#039; kernel module was loaded appropriately by udev and if the &amp;#039;&amp;#039;/dev/ttyUSB0&amp;#039;&amp;#039; character device was created:&lt;br /&gt;
 root@sbc-imx51:~# &amp;#039;&amp;#039;&amp;#039;lsmod&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Module                  Size  Used by&lt;br /&gt;
 usbserial              34512  0&lt;br /&gt;
 [...]&lt;br /&gt;
 root@sbc-imx51:~# &amp;#039;&amp;#039;&amp;#039;ls -l /dev/ttyUSB*&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 crw-rw----    1 root     dialout  188,   0 Oct  9  2010 /dev/ttyUSB0&lt;br /&gt;
 root@sbc-imx51:~#&lt;br /&gt;
&lt;br /&gt;
Then, simply open a &amp;#039;&amp;#039;cat&amp;#039;&amp;#039; on this device to see the GPS data strings (protocol: NMEA):&lt;br /&gt;
 root@sbc-imx51:~# &amp;#039;&amp;#039;&amp;#039;cat /dev/ttyUSB0&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 $GPTXT,01,01,02,u-blox ag - www.u-blox.com*50&lt;br /&gt;
 &lt;br /&gt;
 $GPTXT,01,01,02,HW  UBX-G60xx  00040007 *52&lt;br /&gt;
 &lt;br /&gt;
 $GPTXT,01,01,02,ROM CORE 6.02 (36023) Oct 15 2009 16:52:08*56&lt;br /&gt;
 &lt;br /&gt;
 $GPTXT,01,01,02,ANTSUPERV=AC SD PDoS SR*20&lt;br /&gt;
 &lt;br /&gt;
 $GPTXT,01,01,02,ANTSTATUS=OK*3B&lt;br /&gt;
 &lt;br /&gt;
 $GPRMC,,V,,,,,,,,,,N*53&lt;br /&gt;
 &lt;br /&gt;
 $GPVTG,,,,,,,,,N*30&lt;br /&gt;
 &lt;br /&gt;
 $GPGGA,,,,,,0,00,99.99,,,,,,*48&lt;br /&gt;
 &lt;br /&gt;
 $GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30&lt;br /&gt;
 &lt;br /&gt;
 $GPGSV,1,1,00*79&lt;br /&gt;
 &lt;br /&gt;
 [...]&lt;br /&gt;
&lt;br /&gt;
You can use the simple program&lt;br /&gt;
 gpsmon /dev/ttyUSB0&lt;br /&gt;
for checking if your signal quality is good enough, and if the GPS module can determine your position. Look for &amp;#039;&amp;#039;Latitude&amp;#039;&amp;#039; and &amp;#039;&amp;#039;Longitude&amp;#039;&amp;#039;! Here is an example:&lt;br /&gt;
 127.0.0.1:2947:/dev/ttyUSB0   Generic NMEA&amp;gt;&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │Time: 2010-12-16T16:03:47.0Z  Lat:  48 10&amp;#039; 30.681&amp;quot; N  Lon:  16 16&amp;#039; 59.785&amp;quot; E  │&lt;br /&gt;
 └───────────────────────────────── Cooked PVT ──────────────Lon: ──────────────┘&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │ GPRMC GPVTG GPGGA GPGSA GPGSV GPGLL                                          │&lt;br /&gt;
 └───────────────────────────────── Sentences ──────────────────────────────────┘&lt;br /&gt;
 ┌──────────────────┐┌────────────────────────────┐┌────────────────────────────┐&lt;br /&gt;
 │Ch PRN  Az El S/N ││Time:      160347.00        ││Time:      160346.00        │&lt;br /&gt;
 │ 0   4 310  1   0 ││Latitude:    4810.51136 N   ││Latitude:  4810.51135       │&lt;br /&gt;
 │ 1  11 174 53  19 ││Longitude:  01616.99642 E   ││Longitude: 01616.99647      │&lt;br /&gt;
 │ 2  12 357  0   0 ││Speed:     0.776            ││Altitude:  240.9            │&lt;br /&gt;
 │ 3  13 211 13  30 ││Course:    118.34           ││Quality:   2   Sats: 07     │&lt;br /&gt;
 │ 4  14  42  5   0 ││Status:    A       FAA: D   ││HDOP:      1.25             │&lt;br /&gt;
 │ 5  17 282 36  35 ││MagVar:                     ││Geoid:     42.1             │&lt;br /&gt;
 │ 6  20 304 78  21 │└─────────── RMC ────────────┘└─────────── GGA ────────────┘&lt;br /&gt;
 │ 7  23 205 45  32 │┌────────────────────────────┐&lt;br /&gt;
 │ 8  24 142 53  23 ││Mode: A 3                   │&lt;br /&gt;
 │ 9  31  80 31  17 ││Sats: 23 17 20 31 24 11 13  │&lt;br /&gt;
 │10  32  63 66   0 ││DOP: H=1.25  V=1.77  P=2.17 │&lt;br /&gt;
 │11  33 219 27  36 │└─────────── GSA ────────────┘&lt;br /&gt;
 └────── GSV ───────┘&lt;br /&gt;
 (35) $GPVTG,,T,,M,0.776,N,1.437,K,D*21\x0d\x0a&lt;br /&gt;
&lt;br /&gt;
== GUI support ==&lt;br /&gt;
&lt;br /&gt;
There is a nice Linux application called &amp;#039;&amp;#039;gpsdrive&amp;#039;&amp;#039; which is installed by default in the Gnome demo image for the SBC-i.MX51.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Instructions&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* In Gnome, open a terminal and start the &amp;#039;&amp;#039;gpsd&amp;#039;&amp;#039; daemon:&lt;br /&gt;
 gpsd /dev/ttyUSB0&lt;br /&gt;
* Afterwards, simply start the &amp;#039;&amp;#039;gpsdrive&amp;#039;&amp;#039; GUI&lt;br /&gt;
 gpsdrive&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;gpsdrive&amp;#039;&amp;#039; tells you the current GPS status, the current position, and displays the current map. You can also download maps for a specific location.&lt;br /&gt;
&lt;br /&gt;
* If you start &amp;#039;&amp;#039;gpsd&amp;#039;&amp;#039; with the &amp;#039;&amp;#039;-G&amp;#039;&amp;#039; switch, a TCP port on the SBC is opened, where you can connect with any GPS client (such as &amp;#039;&amp;#039;xgps&amp;#039;&amp;#039; or &amp;#039;&amp;#039;gpsdrive&amp;#039;&amp;#039;, which are both available in Ubuntu) over the Ethernet. We assume that the SBC&amp;#039;s IP address is 192.168.1.10 here:&lt;br /&gt;
 gpsd -G /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
 xgps 192.168.1.10:2947&lt;br /&gt;
 gpsdrive -b 192.168.1.10&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; References &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Have a look at a document from ublox who also tested &amp;#039;&amp;#039;gpsdrive&amp;#039;&amp;#039;: https://www.u-blox.com/en/usb-drivers/linux-driver.html&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;gpsdrive&amp;#039;&amp;#039; web site: https://gpsd.berlios.de/&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;gpsd&amp;#039;&amp;#039; web site: https://www.gpsdrive.de/&lt;br /&gt;
&lt;br /&gt;
[[Category:SBC-i.MX51]]&lt;/div&gt;</summary>
		<author><name>en&gt;Peter</name></author>
	</entry>
</feed>