http://www.armadeus.org/wiki/api.php?action=feedcontributions&user=JulienB&feedformat=atom ArmadeusWiki - User contributions [en] 2024-03-28T20:04:10Z User contributions MediaWiki 1.26.3 http://www.armadeus.org/wiki/index.php?title=LinuxInstall&diff=15142 LinuxInstall 2024-01-30T14:12:12Z <p>JulienB: /* Get Armadeus software */</p> <hr /> <div>&lt;noinclude&gt;<br /> &lt;big&gt;How-To install Armadeus Software Development Kit (SDK) on Linux systems. This SDK is currently based on the (excellent) [http://buildroot.net/ Buildroot].&lt;/big&gt;<br /> &lt;/noinclude&gt;<br /> <br /> The installation was successfully tested on the following distributions:<br /> * Debian Lenny (5.0), Squeeze (6.0.x), Wheezy (7.2), Jessie (8.0)<br /> * X/KUbuntu Edgy Eft (6.10), Gutsy Gibbon (7.10), Hardy Heron (8.04) &amp; Jaunty Jackalope (9.04)<br /> * Ubuntu Lucid Lynx (10.04) (32 &amp; 64bits), 12.04 LTS (32 &amp; 64bits), 13.10 (32 &amp; 64bits), 14.04, 15.04 &amp; 16.04<br /> * LUbuntu 17.10<br /> * Mandriva 2006<br /> * Fedora Core 3 &amp; 4, Fedora 10, Laughlin (14)<br /> * Red Hat Enterprise 5.2<br /> * Gentoo 10.0 (32 &amp; 64 bits)<br /> * SuSE 10.1, OpenSUSE 11.3 - 12.3<br /> <br /> '''The installation may fail on:'''<br /> * Ubuntu Karmic Koala (9.10): tslib fails to build<br /> <br /> '''APF28 requirements:'''<br /> * APF28 board requires a Linux distribution with (GNU) tar version 1.20 or later to compile the Linux Kernel - Please update or upgrade your Linux distribution. <br /> <br /> ==Prerequisites for Linux installation==<br /> {{Note|From here we assume that your Linux system has a ''make'' version '''greater or equal to''' 3.81. To check it: <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make -v<br /> GNU Make 3.81<br /> ...<br /> &lt;/pre&gt;<br /> }}<br /> For armadeus up to 3.4, make should be '''strictly''' make-3.81 (make-3.82 is too strict). A Fedora (14 and 15) -specific solution can be found later; other recent distributions such as mageia1 also have make-3.82, and a generic solution, based on configure&amp;&amp; make&amp;&amp; sudo make install can be used to install make-3.81 (which can be retrieved from http://ftp.gnu.org/gnu/make/make-6.81.tar.gz) in /usr/local/bin (and , according to one's PATH, make 3-81 can be invoked directly or as /usr/local/bin/make). <br /> <br /> Depending on your distribution, some additional packages are required:<br /> <br /> ===Debian/Ubuntu based systems===<br /> [[Ubuntu/Debian installation prerequisites]]<br /> <br /> ===Mandriva based systems=== <br /> [[Mandriva installation prerequisites]]<br /> <br /> ===RPM-based systems (RedHat, Fedora, CentOS)===<br /> [[RedHat/Fedora installation prerequisites]]<br /> <br /> ===OpenSuse based systems===<br /> [[OpenSuse installation prerequisites]]<br /> <br /> ===Gentoo based systems===<br /> [[Gentoo installation prerequisites]]<br /> <br /> ==Get Armadeus software==<br /> * '''If you are a &quot;careful&quot; user''', then download [https://gitlab.com/armadeus/armadeus-bsp/-/tags the latest stable installation tarball from gitlab] and detar it wherever you want:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ tar xjvf armadeus-7.0.tar.bz2<br /> &lt;/pre&gt;<br /> * '''If you want the latest snapshot or if you have a recent SOM ([[OPOS6UL]]/[[OPOS8MM]])''', the whole development tree can be checked out from our [[GIT]] repository.<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ git clone git@gitlab.com:armadeus/armadeus-bsp.git armadeus<br /> &lt;/pre&gt;<br /> <br /> * depending on your previous choice, a directory named ''armadeus/'' or ''armadeus-7.0/'' will be created on your hard-disk and will contain all the files you need.<br /> <br /> '''Remarks''':<br /> * '''Do not use spaces''' in the directory name !<br /> * '''Do not use a directory path beginning with /usr.''' It is a known bug of Buildroot (until BR2012.11, at 2012-12).<br /> * GIT write/push accesses are limited to the integrators ([[User:JulienB|JulienB]], [[User:SebastienSz|SebastienSz]], [[User:Jorasse|Jorasse]], [[User:FabienM|FabienM]], [[User:SebastienR|SebastienR]])<br /> <br /> ==Configure SDK/BSP options==<br /> {{Note|If you are new to Armadeus and have troubles compiling armadeus-5.x/armadeus-6.x using the following instructions, you may find some hints here: [[Releases]]}}<br /> *Go to the directory where you put the Armadeus sources:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ cd armadeus/ (or armadeus-7.0/)<br /> &lt;/pre&gt;<br /> *The first time you compile an Armadeus distribution you have to specify the target (here the [[APF9328]]) to work with. <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make apf9328_defconfig<br /> &lt;/pre&gt;<br /> This command reloads the default configuration to support your target and automatically start a Buildroot's configuration menu.<br /> <br /> * Current valid default configurations are:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> apf9328_defconfig apf27_defconfig pps_defconfig apf28_defconfig apf51_defconfig pps51_defconfig apf6_defconfig apf6legacy_defconfig opos6ul_defconfig opos6ulnano_defconfig<br /> &lt;/pre&gt;<br /> {{Note| To get the full list of available config just type make, it will download buildroot and print following message :<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make<br /> [...]<br /> System not configured. Use make &lt;board&gt;_defconfig <br /> armadeus valid configurations are: <br /> opos6ul_legacy_defconfig opos6ulnano-preempt-rt_defconfig apf6_defconfig pps_defconfig opos6ultest_defconfig apf51_defconfig opos6ulsp_defconfig apf6dawnsmalllinux_defconfig apf27preempt-rt_defconfig apf27test_defconfig apf27_defconfig apf28legacytest_defconfig opos6ullegacy-4.14_defconfig opos6ulnano_defconfig apf28legacy_defconfig apf6mainline-4.19_defconfig opos6ul_defconfig apf6legacy_defconfig apf6xenomai_defconfig apf51test_defconfig opos6ul-preempt-rt_defconfig apf6legacy-preempt-rt_defconfig apf6legacy-4.1_defconfig pps51_defconfig apf6mainline-4.9_defconfig apf28test_defconfig apf28_defconfig apf6mediacenter_defconfig opos6ullegacy-4.9_defconfig opos6ul_recovery_defconfig apf6failsafe_defconfig apf6test_defconfig opos6ullegacy-4.1_defconfig apf27xenomai_defconfig<br /> <br /> Makefile:129: recipe for target '/usr/local/projects/apf6_sp_419/buildroot/.configured' failed<br /> make: *** [/usr/local/projects/apf6_sp_419/buildroot/.configured] Error 1<br /> &lt;/pre&gt;<br /> }}<br /> <br /> For PPS boards, please see [[APF27_PPS]] or [[PPS51]] Wiki pages, as these boards have specific build.<br /> <br /> * After some downloads, you will get the Buildroot configuration interface:<br /> <br /> {{Note|If you ever made changes during the following steps, at any time, you can reload the default configuration with:<br /> $ make xxx_defconfig (xxx depending on your module name)}}<br /> <br /> [[Image:Menuconfig3.png]]&lt;br&gt;<br /> *If you are not familiar with Buildroot here are some tips:<br /> *# you can move the highlighted item with the &quot;up&quot;/&quot;down&quot; arrow keys<br /> *# with the &quot;left&quot;/&quot;right&quot; arrow keys you can choose between &quot;Select&quot;, &quot;Exit&quot; or &quot;Help&quot; buttons<br /> *# &quot;space&quot;/&quot;enter&quot;:<br /> *#* selects the currently highlighted item if you are on the &quot;Select&quot; button<br /> *#* go back in previous menu if you are on &quot;Exit&quot; button<br /> *#* show you some Help for current item if you are on &quot;Help&quot; button<br /> *# for more Help about Buildroot commands, select &quot;Help&quot; in the main configuration screen<br /> <br /> * Update the memory configuration of your board ('''if needed'''; by default BSP is configured for the minimal memory configuration available on the corresponding board):<br /> <br /> :In menu:<br /> :&lt;pre class=&quot;config&quot;&gt;System configuration ---&gt; [*] Armadeus Device Support ---&gt;&lt;/pre&gt;<br /> <br /> :you can check and change the quantity of RAM available on your Armadeus board:<br /> :[[Image:Build_config_memory.png]]<br /> :For [[APF9328]] the memory can be either 16 or 32MiB (be sure to select 1 RAM chip)<br /> :For [[APF27]] it could be either 64MiB or 128MiB (2 x 64MiB) (in that case be sure to select 2 chips of 64MiB instead of 1 chip of 128MiB).<br /> :For [[APF51]] it could be either 256MiB or 512MiB (2x256MiB) (in such case be sure to select 2 chips of 256MiB instead of 1 chip of 512).<br /> :For [[APF28]] The memory can be 128, 256, 512 or 1024MiB (be sure to select 1 RAM chip).<br /> :For [[APF6]]/[[APF6SP]] The memory can be 512 Mbytes or 1Gbytes with ram chip size of 512Mbytes.<br /> :For [[OPOS6UL]]/[[OPOS6UL_NANO]] The memory size is automatically detected so you don't care ;-)<br /> <br /> * You may decrease the compilation time by increasing the number of parallel jobs running simultaneously on your system (the result is not guaranteed). This option is located in:<br /> :&lt;pre class=&quot;config&quot;&gt;Build Options ---&gt; (0) Number of jobs to run simultaneously&lt;/pre&gt;<br /> 0 means that Buildroot will try to guess automatically how much parallel jobs it can launch.<br /> <br /> * During the SDK/BSP build, a lot of software archives are downloaded from Internet. The downloaded files are put by default in the ''armadeus/downloads/'' directory. '''If you have several views or plan to build the toolchain several times''', we advise you to put all the downloaded files in ''/local/downloads'' (for example). This is done by configuring Buildroot to use this directory for all your views. Nevertheless, Buildroot will be downloaded separately for each build environment you set up.<br /> :&lt;pre class=&quot;config&quot;&gt;Build options ---&gt; (...) Download dir&lt;/pre&gt;<br /> :[[Image:Build_config_download.png]]<br /> {{Note|Of course, ''/local/downloads'' should exists on your system and you should have writing rights on it !}}<br /> * In recent Buildroot you can also use the following method:<br /> export BR2_DL_DIR=/local/downloads<br /> <br /> * After the build, we advise you to copy all the files in ''downloads/'' / ''/local/downloads'' on a removable medium, in case you want to install the development tools on other systems, without to have to reload all the archives.<br /> <br /> * Now, Exit the configuration tool and save your configuration<br /> <br /> * You can come back to this configuration menu, by typing (your changes will be kept): <br /> &lt;pre class=&quot;host&quot;&gt;<br /> make menuconfig<br /> &lt;/pre&gt;<br /> <br /> ==Launch build==<br /> $ make<br /> The toolchain and the full distribution are automatically built. During this procedure, several files are downloaded from Internet. &lt;br&gt;<br /> '''Please wait for a while.... it takes at least one hour for the first run!'''&lt;br&gt;<br /> By default, the downloaded files/tarball are put in the ''armadeus/downloads/'' directory. Please see the previous chapter to know how to optimize that if you plan to build several views or want to build faster.<br /> <br /> ==Enjoy the result==<br /> The generated binary files can be found in the subdirectory ''buildroot/output/images'':<br /> *''apf9328-u-boot.brec'' (only on [[APF9328]]): BRecord image that can be used with the bootstrap, if U-Boot is not installed or not working (see [[BootLoader]] page)<br /> *''xxx-u-boot.bin'': U-Boot image file to be used with U-Boot itself, (see [[BootLoader#Update_U-Boot | updating U-Boot]])<br /> *''xxx-linux.bin'': Linux image to use with U-Boot, (see [[Target_Software_Installation#Linux_kernel_installation | updating Linux]])<br /> *''xxx-rootfs.jffs2'': JFFS2 filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])<br /> *''xxx-rootfs.ubi'' (not supported on [[APF9328]]): [[UBIFS|UBI]] filesystem/rootfs image to use with U-Boot, (see [[Target_Software_Installation#Linux_rootfs_installation | updating rootfs]])<br /> *''xxx-rootfs.ext4'': EXT4 filesystem/rootfs image to use with U-Boot, (on [[APF6]] and [[OPOS6UL]])<br /> *''xxx-rootfs.tar'': for an NFS/MMC based rootfs, (see [[Network_Configuration#Boot_from_NFS | Booting from NFS]] &amp; [[MultiMediaCard#Booting_from_MMC.2FSD | Booting from a MMC/SD]])<br /> <br /> '''Please note the new naming convention of binary files and directories (since Armadeus 4.0)'''<br /> <br /> *''buildroot/output/build'': contains all the build results for target root filesystem, Linux, Busybox and U-Boot...<br /> *''buildroot/output/toolchain/'': cross compilation toolchain's build dir. Binaries usable for cross-compilation are in ''buildroot/output/host/usr/bin''.<br /> *''buildroot/output/target/'': target filessytem before generating rootfs images<br /> <br /> More information is available in the [http://buildroot.uclibc.org/buildroot.html Buildroot's documentation]<br /> <br /> * Note: Previous versions (3.x) of Armadeus SDK stored the generated binary files at a different place: '' ''buildroot/binaries/XX/'' (where XX was the name of your board).<br /> <br /> &lt;noinclude&gt;<br /> <br /> You then copy the binary image to your server directory:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ cp buildroot/output/images/* /tftpboot<br /> &lt;/pre&gt;<br /> <br /> ==To keep your local copy/repository up-to-date with the armadeus GIT repository==<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ git pull<br /> &lt;/pre&gt;<br /> This will update your working directory to the latest release.<br /> <br /> Note: if &quot;git pull&quot; fails because a directory or a file already exists, then do:<br /> $ rm -rf &lt;this-directory/file&gt;<br /> $ git pull<br /> <br /> You can do a:<br /> $ make apfXX_defconfig<br /> to have the latest features automatically activated.<br /> <br /> You have to do a '''make''' to rebuild binary files and then upload the binary files to your target.<br /> <br /> Note: if definitively everything goes wrong while it worked before the last update.<br /> You can apply the following procedure (all your modifications in buildroot will be lost):<br /> $ rm -rf buildroot/<br /> $ rm Makefile<br /> $ git pull<br /> $ make apfXX_defconfig<br /> $ make<br /> $ cp buildroot/output/images/* /tftpboot<br /> <br /> Enjoy!<br /> &lt;/noinclude&gt;</div> JulienB http://www.armadeus.org/wiki/index.php?title=WiFi&diff=15141 WiFi 2024-01-30T13:24:16Z <p>JulienB: /* Common operations */</p> <hr /> <div>==Pre-requites==<br /> {{Note| To configure Wi-Fi you need to [[Wireless Tools| install wireless tools]] first (done by default for APF27 / PPS / APF51 / APF6 / OPOS6UL) and of course also need to have a running Wi-Fi interface like: the [[Libertas_driver|one on APW extension board, APF51Dev or PPS devt boards]], the [[Wl12xx_driver|one on APF6]], the one on [[OPOS6UL]] or a [[USB_to_WiFi_adapter|USB to Wi-Fi adapter]], with corresponding Linux drivers loaded.}}<br /> <br /> ==Common operations==<br /> ====List network interfaces supporting Wi-Fi====<br /> {|<br /> ! Old BSPs !! New BSPs<br /> |-<br /> |&lt;pre class=apf&gt;<br /> # iwconfig<br /> lo no wireless extensions.<br /> <br /> eth0 no wireless extensions.<br /> <br /> sit0 no wireless extensions.<br /> <br /> wmaster0 no wireless extensions.<br /> <br /> wlan0 IEEE 802.11bg ESSID:&quot;&quot; <br /> Mode:Managed Frequency:2.412 GHz Access Point: Not-Associated <br /> Tx-Power=0 dBm <br /> Retry min limit:7 RTS thr:off Fragment thr=2352 B <br /> Encryption key:off<br /> Power Management:off<br /> Link Quality:0/100 Signal level:112/146 Noise level:0/0<br /> Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0<br /> Tx excessive retries:0 Invalid misc:0 Missed beacon:0<br /> &lt;/pre&gt;<br /> | &lt;pre class=apf&gt;# iw dev<br /> phy#0<br /> Interface wlan0<br /> ifindex 3<br /> wdev 0x1<br /> addr 74:7a:90:e7:e0:d5<br /> type managed<br /> channel 34 (5170 MHz), width: 20 MHz, center1: 5170 MHz&lt;/pre&gt;<br /> |}<br /> <br /> {{Note|Here our Wi-Fi network interface is called ''wlan0''. Depending on the number of your network interfaces or their model, this name could change. For example if using the Libertas drivers, the interface may be called ''eth1'' (if ''eth0'' is already used). In that case replace ''wlan0'' with your interface name.}}<br /> <br /> ====Activate the WLAN interface====<br /> {|<br /> ! Old BSPs !! New BSPs<br /> |-<br /> |&lt;pre class=apf&gt;<br /> # ifconfig wlan0 up<br /> &lt;/pre&gt;<br /> |&lt;pre class=apf&gt;<br /> # ip link set wlan0 up<br /> &lt;/pre&gt;<br /> |}<br /> <br /> ==== Show all Access Points (AP) available for your APF (here with wlan0 interface) ====<br /> {|<br /> ! Old BSPs !! New BSPs<br /> |-<br /> |&lt;pre class=apf&gt;<br /> # iwlist wlan0 scan<br /> <br /> wlan0 Scan completed :<br /> Cell 01 - Address: XX:XX:XX:66:47:48<br /> ESSID:&quot;TOTO&quot;<br /> Mode:Master<br /> Channel:1<br /> Frequency:2.412 GHz (Channel 1)<br /> Quality=88/100 Signal level:25/100<br /> Encryption key:on<br /> Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s<br /> 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s<br /> 48 Mb/s; 54 Mb/s<br /> Extra:tsf=00000009d398fec8<br /> Extra: Last beacon: 1390ms ago<br /> ...<br /> &lt;/pre&gt;<br /> |&lt;pre class=apf&gt;<br /> # iw wlan0 scan<br /> <br /> BSS XX:XX:XX:ed:c5:b0(on wlan0)<br /> last seen: 1805.540s [boottime]<br /> TSF: 0 usec (0d, 00:00:00)<br /> freq: 2462<br /> beacon interval: 120 TUs<br /> capability: ESS Privacy ShortSlotTime RadioMeasure (0x1411)<br /> signal: -90.00 dBm<br /> last seen: 0 ms ago<br /> SSID: TOTO<br /> Supported rates: 1.0* 2.0* 5.5* 11.0* 6.0 9.0 12.0 18.0 <br /> DS Parameter set: channel 11<br /> ...&lt;/pre&gt;<br /> |}<br /> <br /> ==== Connect to an unencrypted AP ====<br /> {|<br /> ! Old BSPs !! New BSPs<br /> |-<br /> |&lt;pre class=apf&gt;<br /> # iwconfig wlan0 essid AP_NAME<br /> &lt;/pre&gt;<br /> * Check it:<br /> &lt;pre class=apf&gt;<br /> # iwconfig wlan0<br /> &lt;/pre&gt;<br /> <br /> |&lt;pre class=apf&gt;<br /> # iw dev wlan0 connect AP_NAME<br /> &lt;/pre&gt;<br /> * Check it:<br /> &lt;pre class=apf&gt;<br /> # iw dev wlan0 link<br /> &lt;/pre&gt;<br /> |}<br /> <br /> ==== Get an IP address ====<br /> &lt;pre class=apf&gt;<br /> # udhcpc -i wlan0<br /> &lt;/pre&gt;<br /> <br /> ==Encryption settings==<br /> When configuring Wi-Fi cryptography, only WEP can be setup easily from a terminal with single commands. For a Wi-Fi network with a WPA/WPA2 protection system, you should install and configure [[WPA supplicant|wpa_supplicant]].<br /> <br /> {{Warning| The Wi-Fi Alliance defined WPA/WPA2 protection protocol in response to serious weaknesses researchers had found in the previous system, WEP (Wired Equivalent Privacy). Therefore, we strongly recommend you to use WPA/WPA2 to protect your network. Our [[WPA supplicant|wpa_supplicant]] wiki page provides the procedure to configure a WPA/WPA2 access to your network <br /> }}<br /> <br /> ==== WEP configuration ====<br /> <br /> This example is given for a Wi-Fi Access Point named ''armadeus'', the encoding key used here is not recommended, of course ;) :<br /> <br /> &lt;pre class=apf&gt;<br /> # iwconfig wlan0 essid armadeus<br /> # iwconfig wlan0 key 12345678901234567890<br /> # ifconfig wlan0 up (if interface is not already up)<br /> ADDRCONF(NETDEV_UP): wlan0: link is not ready<br /> # ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready<br /> &lt;/pre&gt;<br /> <br /> Now, the Wi-Fi adapter is ready and attached :<br /> &lt;pre class=apf&gt;<br /> # iwconfig<br /> lo no wireless extensions.<br /> <br /> eth0 no wireless extensions.<br /> <br /> sit0 no wireless extensions.<br /> <br /> wmaster0 no wireless extensions.<br /> <br /> wlan0 IEEE 802.11bg ESSID:&quot;armadeus&quot; <br /> Mode:Managed Frequency:2.437 GHz Access Point: 00:1B:2F:E7:E4:08 <br /> Bit Rate=2 Mb/s Tx-Power=7 dBm <br /> Retry min limit:7 RTS thr:off Fragment thr=2352 B <br /> Encryption key:XXXXXXXXXXXXXXXXXXXXXXXXXX Security mode:restricted<br /> Power Management:off<br /> Link Quality:0/100 Signal level:73/146 Noise level:0/0<br /> Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0<br /> Tx excessive retries:0 Invalid misc:0 Missed beacon:0<br /> <br /> &lt;/pre&gt;<br /> <br /> ==Accessing outside world==<br /> We can manually configure the network to access Internet via the Wi-Fi interface instead of the Ethernet one:<br /> <br /> &lt;pre class=apf&gt;<br /> # ifconfig eth0 down<br /> # ifconfig wlan0 192.168.0.212<br /> # route add default gw 192.168.0.1 dev wlan0<br /> &lt;/pre&gt;<br /> <br /> And configure the nameserver in /etc/resolv.conf<br /> &lt;pre class=apf&gt;<br /> domain dev.null<br /> nameserver 192.168.0.207<br /> ~ <br /> ~<br /> ~<br /> &lt;/pre&gt;<br /> <br /> If you have a DHCP server on your network, you can also use it and previous steps (route+resolv.conf) will be done automatically:<br /> &lt;pre class=apf&gt;<br /> # udhcpc -i wlan0<br /> &lt;/pre&gt;<br /> <br /> We can now ping the best website in the world :<br /> &lt;pre class=apf&gt;<br /> # ping www.armadeus.org<br /> PING www.armadeus.org (213.186.33.5): 56 data bytes<br /> 64 bytes from 213.186.33.5: seq=0 ttl=122 time=66.735 ms<br /> 64 bytes from 213.186.33.5: seq=1 ttl=122 time=50.392 ms<br /> ^C<br /> --- www.armadeus.org ping statistics ---<br /> 2 packets transmitted, 2 packets received, 0% packet loss<br /> round-trip min/avg/max = 50.392/58.563/66.735 ms<br /> &lt;/pre&gt;<br /> <br /> == Surf on the net ==<br /> <br /> To surf on the web, you can use (for example) ''links'' software :<br /> &lt;pre class=apf&gt;<br /> # links www.armadeus.org<br /> &lt;/pre&gt;<br /> <br /> It's an ASCII internet browser. [[Links| For more informations about Links]].<br /> <br /> ==Links==<br /> * [[Wireless_Tools|Wireless Tools installation]]<br /> * [[USB_to_WiFi_adapter|USB to Wi-Fi adapters tested with Armadeus boards]]<br /> * [[Network_interface_bandwidth_measurement| Measure the bandwidth of your network interface]]<br /> * [[WPA_supplicant|WPA_supplicant]]<br /> * [[APF as Wi-Fi Access Point]]<br /> <br /> [[Category:WiFi]]<br /> [[Category:Wireless]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=WiFi&diff=15140 WiFi 2024-01-30T12:11:50Z <p>JulienB: /* Common operations */</p> <hr /> <div>==Pre-requites==<br /> {{Note| To configure Wi-Fi you need to [[Wireless Tools| install wireless tools]] first (done by default for APF27 / PPS / APF51 / APF6 / OPOS6UL) and of course also need to have a running Wi-Fi interface like: the [[Libertas_driver|one on APW extension board, APF51Dev or PPS devt boards]], the [[Wl12xx_driver|one on APF6]], the one on [[OPOS6UL]] or a [[USB_to_WiFi_adapter|USB to Wi-Fi adapter]], with corresponding Linux drivers loaded.}}<br /> <br /> ==Common operations==<br /> ====List network interfaces supporting Wi-Fi====<br /> {|<br /> ! Old BSPs !! New BSPs<br /> |-<br /> |&lt;pre class=apf&gt;<br /> # iwconfig<br /> lo no wireless extensions.<br /> <br /> eth0 no wireless extensions.<br /> <br /> sit0 no wireless extensions.<br /> <br /> wmaster0 no wireless extensions.<br /> <br /> wlan0 IEEE 802.11bg ESSID:&quot;&quot; <br /> Mode:Managed Frequency:2.412 GHz Access Point: Not-Associated <br /> Tx-Power=0 dBm <br /> Retry min limit:7 RTS thr:off Fragment thr=2352 B <br /> Encryption key:off<br /> Power Management:off<br /> Link Quality:0/100 Signal level:112/146 Noise level:0/0<br /> Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0<br /> Tx excessive retries:0 Invalid misc:0 Missed beacon:0<br /> &lt;/pre&gt;<br /> | &lt;pre class=apf&gt;# iw dev<br /> phy#0<br /> Interface wlan0<br /> ifindex 3<br /> wdev 0x1<br /> addr 74:7a:90:e7:e0:d5<br /> type managed<br /> channel 34 (5170 MHz), width: 20 MHz, center1: 5170 MHz&lt;/pre&gt;<br /> |}<br /> <br /> {{Note|Here our Wi-Fi network interface is called ''wlan0''. Depending on the number of your network interfaces or their model, this name could change. For example if using the Libertas drivers, the interface may be called ''eth1'' (if ''eth0'' is already used). In that case replace ''wlan0'' with your interface name.}}<br /> <br /> ====Activate the WLAN interface====<br /> {|<br /> ! Old BSPs !! New BSPs<br /> |-<br /> |&lt;pre class=apf&gt;<br /> # ifconfig wlan0 up<br /> &lt;/pre&gt;<br /> |&lt;pre class=apf&gt;<br /> # ip link set wlan0 up<br /> &lt;/pre&gt;<br /> |}<br /> <br /> ==== Show all Access Points (AP) available for your APF (here with wlan0 interface) ====<br /> {|<br /> ! Old BSPs !! New BSPs<br /> |-<br /> |&lt;pre class=apf&gt;<br /> # iwlist wlan0 scan<br /> <br /> wlan0 Scan completed :<br /> Cell 01 - Address: XX:XX:XX:66:47:48<br /> ESSID:&quot;TOTO&quot;<br /> Mode:Master<br /> Channel:1<br /> Frequency:2.412 GHz (Channel 1)<br /> Quality=88/100 Signal level:25/100<br /> Encryption key:on<br /> Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s<br /> 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s<br /> 48 Mb/s; 54 Mb/s<br /> Extra:tsf=00000009d398fec8<br /> Extra: Last beacon: 1390ms ago<br /> ...<br /> &lt;/pre&gt;<br /> |&lt;pre class=apf&gt;<br /> # iw wlan0 scan<br /> <br /> BSS XX:XX:XX:ed:c5:b0(on wlan0)<br /> last seen: 1805.540s [boottime]<br /> TSF: 0 usec (0d, 00:00:00)<br /> freq: 2462<br /> beacon interval: 120 TUs<br /> capability: ESS Privacy ShortSlotTime RadioMeasure (0x1411)<br /> signal: -90.00 dBm<br /> last seen: 0 ms ago<br /> SSID: TOTO<br /> Supported rates: 1.0* 2.0* 5.5* 11.0* 6.0 9.0 12.0 18.0 <br /> DS Parameter set: channel 11<br /> ...&lt;/pre&gt;<br /> |}<br /> <br /> ==== Connect to an unencrypted AP ====<br /> &lt;pre class=apf&gt;<br /> # iwconfig wlan0 essid AP_NAME<br /> &lt;/pre&gt;<br /> * Check it:<br /> &lt;pre class=apf&gt;<br /> # iwconfig wlan0<br /> &lt;/pre&gt;<br /> <br /> ==== Get an IP address ====<br /> &lt;pre class=apf&gt;<br /> # udhcpc -i wlan0<br /> &lt;/pre&gt;<br /> <br /> ==Encryption settings==<br /> When configuring Wi-Fi cryptography, only WEP can be setup easily from a terminal with single commands. For a Wi-Fi network with a WPA/WPA2 protection system, you should install and configure [[WPA supplicant|wpa_supplicant]].<br /> <br /> {{Warning| The Wi-Fi Alliance defined WPA/WPA2 protection protocol in response to serious weaknesses researchers had found in the previous system, WEP (Wired Equivalent Privacy). Therefore, we strongly recommend you to use WPA/WPA2 to protect your network. Our [[WPA supplicant|wpa_supplicant]] wiki page provides the procedure to configure a WPA/WPA2 access to your network <br /> }}<br /> <br /> ==== WEP configuration ====<br /> <br /> This example is given for a Wi-Fi Access Point named ''armadeus'', the encoding key used here is not recommended, of course ;) :<br /> <br /> &lt;pre class=apf&gt;<br /> # iwconfig wlan0 essid armadeus<br /> # iwconfig wlan0 key 12345678901234567890<br /> # ifconfig wlan0 up (if interface is not already up)<br /> ADDRCONF(NETDEV_UP): wlan0: link is not ready<br /> # ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready<br /> &lt;/pre&gt;<br /> <br /> Now, the Wi-Fi adapter is ready and attached :<br /> &lt;pre class=apf&gt;<br /> # iwconfig<br /> lo no wireless extensions.<br /> <br /> eth0 no wireless extensions.<br /> <br /> sit0 no wireless extensions.<br /> <br /> wmaster0 no wireless extensions.<br /> <br /> wlan0 IEEE 802.11bg ESSID:&quot;armadeus&quot; <br /> Mode:Managed Frequency:2.437 GHz Access Point: 00:1B:2F:E7:E4:08 <br /> Bit Rate=2 Mb/s Tx-Power=7 dBm <br /> Retry min limit:7 RTS thr:off Fragment thr=2352 B <br /> Encryption key:XXXXXXXXXXXXXXXXXXXXXXXXXX Security mode:restricted<br /> Power Management:off<br /> Link Quality:0/100 Signal level:73/146 Noise level:0/0<br /> Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0<br /> Tx excessive retries:0 Invalid misc:0 Missed beacon:0<br /> <br /> &lt;/pre&gt;<br /> <br /> ==Accessing outside world==<br /> We can manually configure the network to access Internet via the Wi-Fi interface instead of the Ethernet one:<br /> <br /> &lt;pre class=apf&gt;<br /> # ifconfig eth0 down<br /> # ifconfig wlan0 192.168.0.212<br /> # route add default gw 192.168.0.1 dev wlan0<br /> &lt;/pre&gt;<br /> <br /> And configure the nameserver in /etc/resolv.conf<br /> &lt;pre class=apf&gt;<br /> domain dev.null<br /> nameserver 192.168.0.207<br /> ~ <br /> ~<br /> ~<br /> &lt;/pre&gt;<br /> <br /> If you have a DHCP server on your network, you can also use it and previous steps (route+resolv.conf) will be done automatically:<br /> &lt;pre class=apf&gt;<br /> # udhcpc -i wlan0<br /> &lt;/pre&gt;<br /> <br /> We can now ping the best website in the world :<br /> &lt;pre class=apf&gt;<br /> # ping www.armadeus.org<br /> PING www.armadeus.org (213.186.33.5): 56 data bytes<br /> 64 bytes from 213.186.33.5: seq=0 ttl=122 time=66.735 ms<br /> 64 bytes from 213.186.33.5: seq=1 ttl=122 time=50.392 ms<br /> ^C<br /> --- www.armadeus.org ping statistics ---<br /> 2 packets transmitted, 2 packets received, 0% packet loss<br /> round-trip min/avg/max = 50.392/58.563/66.735 ms<br /> &lt;/pre&gt;<br /> <br /> == Surf on the net ==<br /> <br /> To surf on the web, you can use (for example) ''links'' software :<br /> &lt;pre class=apf&gt;<br /> # links www.armadeus.org<br /> &lt;/pre&gt;<br /> <br /> It's an ASCII internet browser. [[Links| For more informations about Links]].<br /> <br /> ==Links==<br /> * [[Wireless_Tools|Wireless Tools installation]]<br /> * [[USB_to_WiFi_adapter|USB to Wi-Fi adapters tested with Armadeus boards]]<br /> * [[Network_interface_bandwidth_measurement| Measure the bandwidth of your network interface]]<br /> * [[WPA_supplicant|WPA_supplicant]]<br /> * [[APF as Wi-Fi Access Point]]<br /> <br /> [[Category:WiFi]]<br /> [[Category:Wireless]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=Microcom&diff=15139 Microcom 2023-12-07T11:20:12Z <p>JulienB: /* Usage */</p> <hr /> <div>== Introduction ==<br /> <br /> Microcom is an embedded terminal that can be installed on APF/OPOS SOMs.<br /> <br /> == Installation ==<br /> <br /> Installed by default on recent Armadeus BSPs.<br /> <br /> == Usage ==<br /> <br /> To connect a tty do this :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # microcom -s 115200 /dev/ttymxc1<br /> &lt;/pre&gt;<br /> <br /> Press Ctrl-X to quit the terminal.<br /> <br /> [[Category: terminal]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=Microcom&diff=15138 Microcom 2023-12-07T11:19:48Z <p>JulienB: </p> <hr /> <div>== Introduction ==<br /> <br /> Microcom is an embedded terminal that can be installed on APF/OPOS SOMs.<br /> <br /> == Installation ==<br /> <br /> Installed by default on recent Armadeus BSPs.<br /> <br /> == Usage ==<br /> <br /> To connect a tty do this :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> $ microcom -s 115200 /dev/ttymxc1<br /> &lt;/pre&gt;<br /> <br /> Press Ctrl-X to quit the terminal.<br /> <br /> [[Category: terminal]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=Microcom&diff=15137 Microcom 2023-12-07T11:19:14Z <p>JulienB: </p> <hr /> <div>[[Category: terminal]]<br /> <br /> == Introduction ==<br /> <br /> Microcom is an embedded terminal that can be installed on APF/OPOS SOMs.<br /> <br /> == Installation ==<br /> <br /> Installed by default on recent Armadeus BSPs.<br /> <br /> == Usage ==<br /> <br /> To connect a tty do this :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> $ microcom -s 115200 /dev/ttymxc1<br /> &lt;/pre&gt;<br /> <br /> Press Ctrl-X to quit the terminal.</div> JulienB http://www.armadeus.org/wiki/index.php?title=GSM/GPRS&diff=15136 GSM/GPRS 2023-08-17T13:23:31Z <p>JulienB: /* Introduction */</p> <hr /> <div>This page will summarize informations to use the GSM/GPRS/3G module of the [[Wireless_extension_board|APF27Wireless board]], [[APF51Dev]] (optional), the [[APF6Dev]] (optional) or the RPi compatible Hats connected to OPOSxxDev RPi connector.<br /> <br /> ==Introduction==<br /> GSM/GPRS are generally driven through the RS-232 bus. AT commands are used to dialog with the module.<br /> * GSM MODEM of the [[Wireless_extension_board|APF27Wireless extension board (APW)]] is connected to the UART2 (/dev/ttySMX1) of the [[APF27]].<br /> * GSM/3G MODEM of the [[APF51Dev]] is connected to the i.MX processor through an UART implemented in the FPGA. So the corresponding bitfile has to loaded before trying to access the MODEM.<br /> * GSM/3G MODEM of the [[APF6Dev]] is connected to the UART3 of the i.MX6 processor. <br /> They are all using a Sagem's Hilo module. Hilo AT commands can be found [http://support.sagemcom.com/site/livret/URD1_OTL_5725_1_008_72807_-_AT_Command_Set_for_SAGEMCOM_Modules__Ed_14_06_dated_11_May_2012.pdf here]<br /> * RPi Hats with dedicated module (mostly SIMCOM one's) are connected through UART2 of RPi connector of OPOSxxDev boards.<br /> <br /> ==Linux configuration (APF27Dev only)==<br /> * Linux will have to be configured in order to tell that an APW is connected to your [[APF27Dev]]:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make linux-menuconfig<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;config&quot;&gt;<br /> System Type ---&gt;<br /> Freescale MXC Implementations ---&gt;<br /> ...<br /> Extension board (Wireless (APW)) ---&gt;<br /> [*] GSM/GPRS Modem (NEW)<br /> [ ] Bluetooth &amp; WiFi module (NEW)<br /> [ ] CSI (Camera) pass-through (NEW)<br /> [ ] GPS module (NEW)<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make linux<br /> &lt;/pre&gt;<br /> * reflash you Linux kernel<br /> <br /> ==Configure serial port==<br /> ====APF27====<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttySMX1 (or /dev/ttymxc1 on recent kernels)<br /> # stty -F $GSM_DEVICE raw -echo -echoe -echok 115200<br /> &lt;/pre&gt;<br /> <br /> ====APF51Dev====<br /> <br /> {{Note|Don't forget to put &quot;Wireless&quot; J42 jumper (near microSD connector) '''AND''' power on FPGA Bank 3 (with corresponding J39 jumper).}}<br /> * On APF51Dev, GSM/3G module is accessed through serial ports synthetized in APF51's FPGA. So we have to load it first. (Needed dual UARTs FPGA firmware can be found under armadeus-4.0 distribution in ''firmware/pod_scripts'' directory, with the [[POD]] script needed to regenerate it, and is by default installed in rootfs).<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # load_fpga /lib/firmware/fpga/apf51_gsm_gps_firmware.bin<br /> &lt;/pre&gt;<br /> * Once firmware loaded, drivers related to FPGA can be used :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # modprobe irq_ocore<br /> # modprobe 8250<br /> Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled<br /> # modprobe twin_uarts_irq_mng<br /> # modprobe twin_uarts_16750<br /> serial8250.0: ttyS0 at MMIO 0xb8000020 (irq = 320) is a TI16750<br /> serial8250.0: ttyS1 at MMIO 0xb8000040 (irq = 321) is a TI16750<br /> &lt;/pre&gt;<br /> * Bring MODEM out of reset state (POK_IN/PWON pin, connected to [[APF51_PMIC#GPIO|PMIC GPIO6]]):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # modprobe wm831x-gpio<br /> # echo 245 &gt; /sys/class/gpio/export<br /> # echo out &gt; /sys/class/gpio/gpio245/direction<br /> # echo 1 &gt; /sys/class/gpio/gpio245/value<br /> &lt;/pre&gt;<br /> * Configure serial port:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # ls /dev/ttyS*<br /> /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3<br /> &lt;/pre&gt;<br /> <br /> * If the /dev/ttyS[0-1] files don't exist, create it/them with ''mknod'' :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mknod /dev/ttyS0 c 4 64<br /> # mknod /dev/ttyS1 c 4 65<br /> &lt;/pre&gt;<br /> Then :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttyS0<br /> # stty -F $GSM_DEVICE -echo -echoe -echok 115200 crtscts<br /> &lt;/pre&gt;<br /> <br /> ====APF6Dev====<br /> * Power up the chip. (GSM_PWR_EN is connected to the GPIO7_13)<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 205 &gt; /sys/class/gpio/export <br /> # echo out &gt; /sys/class/gpio/gpio205/direction<br /> # echo 1 &gt; /sys/class/gpio/gpio205/value<br /> &lt;/pre&gt;<br /> <br /> * Start it by setting a low level pulse during about 2 seconds on the POKIN line (POKIN is connected to the GPIO1_4).<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 4 &gt; /sys/class/gpio/export <br /> # echo out &gt; /sys/class/gpio/gpio4/direction<br /> # echo 1 &gt; /sys/class/gpio/gpio4/value<br /> # sleep 2<br /> # echo 0 &gt; /sys/class/gpio/gpio4/value<br /> &lt;/pre&gt;<br /> <br /> * Configure the serial port<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttymxc2<br /> # stty -F $GSM_DEVICE -echo -echoe -echok 115200<br /> &lt;/pre&gt;<br /> <br /> ====OPOSxxDev with RPi connector====<br /> * Configure the serial port<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttymxc1<br /> # stty -F $GSM_DEVICE -echo -echoe -echok 115200<br /> &lt;/pre&gt;<br /> <br /> ==Basic Usage==<br /> ===Sending AT commands &quot;manually&quot;===<br /> * Sending AT commands with ''minicom/microcom'' utility (one of the command coming with [[busybox]]): <br /> <br /> {{Note|minicom has been removed in recent BSP, so use microcom instead}}<br /> <br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # microcom $GSM_DEVICE<br /> &lt;/pre&gt;<br /> ( To exit ''microcom'' you will have to type '''&lt;CTRL-x&gt;''' )<br /> * Check module presence:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ATI3<br /> SAGEM HiC,A.005.00<br /> <br /> OK<br /> &lt;/pre&gt;<br /> <br /> {{Note| If no echo are printed on serial console: you can't see what you're typing. In that case, to reactivate the echo, use:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ATE1<br /> &lt;/pre&gt;<br /> }}<br /> <br /> {{Note| By default, the module starts in auto baudrate. This mays result in loss of communication with baud rate higher than 19200 bauds. To avoid problems, the baud rate has to be fixed (here to 115200 bauds):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+IPR=115200<br /> &lt;/pre&gt;<br /> }}<br /> <br /> * Get constructor name:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CGMI<br /> SAGEM<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Get model name:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CGMM<br /> HILO GPRS<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Enter PIN code (here 0000). '''!! Use your own and beware that you will only get 3 tries !!:'''<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CPIN=&quot;0000&quot;<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Check PIN code status:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CPIN?<br /> +CPIN: READY<br /> <br /> OK<br /> &lt;/pre&gt;<br /> {{Note|Don't launch further AT commands if PIN code wasn't entered successfully}}<br /> <br /> * Check module status (0 Ready, 1 Unavailable, 2 Status unknown, 3 Ringing, 4 Call in progress, 5 Asleep):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CPAS<br /> +CPAS: 0<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Get Indicator control (&lt;battchg&gt;[0-4],&lt;signal&gt;[0-4],&lt;service&gt;0/1,&lt;message&gt;0/1,&lt;call&gt;0/1,&lt;smsfull&gt;0/1):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CIND?<br /> +CIND: 0,4,1,0,0,0,1<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Get signal quality (should be better than 12/99):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CSQ<br /> +CSQ: 24,99<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Voice call &quot;123456789&quot; (; is important here to signify a voice call, otherwise a data call is tried and may fail if you don't have the right subscribe)<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ATD&quot;123456789&quot;;<br /> OK<br /> &lt;/pre&gt;<br /> * Terminate current call:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ATH<br /> OK<br /> &lt;/pre&gt;<br /> <br /> ===Sending AT commands in shell scripts===<br /> <br /> &lt;source lang=&quot;bash&quot;&gt;<br /> GSM_DEVICE=/dev/ttyXXX<br /> send_at_cmd()<br /> {<br /> echo -e -n &quot;$1\015&quot; &gt; $GSM_DEVICE<br /> sleep 1 # Adjustable ! (usleep)<br /> }<br /> <br /> send_at_cmd AT<br /> &lt;/source&gt;<br /> <br /> * See ''target/test/test_gsm.sh'' for more details<br /> <br /> ==Sending SMS==<br /> * Supposing you are already connected to the modem with cu<br /> * Check if you can send SMS with your SIM card (you should get +CMGF: (0,1))<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CMGF=?<br /> &lt;/pre&gt;<br /> * If OK, switch to SMS sending mode:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CMGF=1<br /> &lt;/pre&gt;<br /> * Write a message for 0661234567 phone number:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CMGW=&quot;0661326109&quot;<br /> <br /> &gt; Hey ! How are you doing ??<br /> &gt; &lt;-- Ctrl+z to end SMS here<br /> <br /> +CMGW: 8<br /> &lt;/pre&gt;<br /> * +CMGW give you the number of your SMS saved in SIM card or phone memory<br /> * Then, at anytime, you can send your SMS with (pass previous number as parameter):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CMSS=8<br /> &lt;/pre&gt;<br /> <br /> ==Tools to look at==<br /> * http://www.developershome.com/sms/freeLibForSMS.asp<br /> * http://www.gnokii.org/<br /> * http://www.alamin.org/en/index.html<br /> * http://www.gammu.org/wiki/index.php?title=Gammu:Main_Page<br /> * http://gatling.ikk.sztaki.hu/~kissg/gsm/index.html<br /> <br /> ==Data tranfers (EDGE/3G)==<br /> <br /> ===PPP installation (done by default on APF51)===<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make linux-menuconfig<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;config&quot;&gt;<br /> Device Drivers ---&gt;<br /> [*] Network device support ---&gt;<br /> &lt;M&gt; PPP (point-to-point protocol) support<br /> [ ] PPP multilink support (EXPERIMENTAL)<br /> [ ] PPP filtering<br /> &lt;M&gt; PPP support for async serial ports<br /> &lt; &gt; PPP support for sync tty ports<br /> &lt; &gt; PPP Deflate compression<br /> &lt; &gt; PPP BSD-Compress compression<br /> &lt; &gt; PPP MPPE compression (encryption) (EXPERIMENTAL)<br /> &lt; &gt; PPP over Ethernet (EXPERIMENTAL)<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;config&quot;&gt;<br /> Package Selection for the target ---&gt;<br /> Networking applications ---&gt;<br /> [*] pppd<br /> [ ] filtering<br /> [ ] radius<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make linux &amp;&amp; make<br /> &lt;/pre&gt;<br /> <br /> * reflash kernel &amp; rootfs<br /> <br /> ===PPP configuration===<br /> {{Note|Following instructions are given for the French operator &quot;Bouygtel&quot; and may need to be ajusted accordingly, depending on your operator/country}}<br /> <br /> * Create a &quot;chat&quot; script that will be used to initiate MODEM dialup (here we use the &quot;cat &gt; xxxx &lt;&lt; EOF trick&quot; to automatically create the file, but you can also manually edit it with ''vi'' or ''nano''):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir -p /etc/chatscripts/<br /> # cat &gt; /etc/chatscripts/bouygtel &lt;&lt;EOF<br /> ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO ANSWER' ABORT DELAYED ABORT ERROR<br /> '' AT<br /> OK AT+IPR=115200<br /> OK AT+CPIN=&quot;0000&quot;<br /> OK AT+CFUN=1<br /> OK AT+COPS?<br /> OK AT+CSQ<br /> OK 'AT+CGDCONT=1,&quot;IP&quot;,&quot;ebouygtel.com&quot;,&quot;&quot;,0,0'<br /> OK 'AT&amp;FE0Q0V1'<br /> OK 'ATD*99#'<br /> CONNECT &quot;&quot;<br /> EOF<br /> &lt;/pre&gt;<br /> * Don't forget to set the baudrate (default: 115200) to have a stable communication between the modem and the processor<br /> * Don't forget to update &quot;AT+CPIN=&quot; with your real PIN code and &quot;AT+CGDCONT&quot; and &quot;ATD*99#&quot; with your operator parameters.<br /> * If you want to test your chat script (verbose mode -v, on console -s, with 5 second timeout by default for commands -t 5), then launch:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/sbin/chat -v -s -t 5 -f /etc/chatscripts/bouygtel &gt; $GSM_DEVICE &lt; $GSM_DEVICE<br /> &lt;/pre&gt;<br /> * If this test was OK, you may have to poweroff/poweron the MODEM to bring it to its initial state and go further.<br /> <br /> ====For '''APF51'''====<br /> * create the PPPd config files (''/etc/ppp/peers/bouygtel'' and ''/etc/ppp/options.ttyS0''):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir -p /etc/ppp/peers/<br /> # cat &gt; /etc/ppp/peers/bouygtel &lt;&lt;EOF<br /> noauth<br /> connect &quot;/usr/sbin/chat -v -t 5 -f /etc/chatscripts/bouygtel&quot;<br /> debug<br /> ttyS0<br /> defaultroute<br /> noipdefault<br /> usepeerdns<br /> EOF<br /> <br /> # cat &gt; /etc/ppp/options.ttyS0 &lt;&lt;EOF<br /> 115200<br /> EOF<br /> &lt;/pre&gt;<br /> <br /> ====For '''APF27'''====<br /> {{Note| Check if /dev/ttySMX1 exists, if not create it with :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> mknod /dev/ttySMX1 c 204 42<br /> &lt;/pre&gt;<br /> }}<br /> * create the PPPd config files (''/etc/ppp/peers/bouygtel'' and ''/etc/ppp/options.ttySMX1''):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir -p /etc/ppp/peers/<br /> # cat &gt; /etc/ppp/peers/bouygtel &lt;&lt;EOF<br /> noauth<br /> connect &quot;/usr/sbin/chat -v -t 5 -f /etc/chatscripts/bouygtel&quot;<br /> debug<br /> ttySMX1<br /> defaultroute<br /> noipdefault<br /> usepeerdns<br /> EOF<br /> <br /> # cat &gt; /etc/ppp/options.ttySMX1 &lt;&lt;EOF<br /> 115200<br /> EOF<br /> &lt;/pre&gt;<br /> <br /> ===PPP Usage===<br /> * Load PPP module:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # modprobe ppp (APF27)<br /> or<br /> # modprobe ppp_async (APF51)<br /> &lt;/pre&gt;<br /> * Setup serial port name depending on your platform (''/dev/ttyS0'' on APF51, ''/dev/ttySMX1'' on APF27)<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttyS0<br /> or<br /> # export GSM_DEVICE=/dev/ttySMX1<br /> &lt;/pre&gt;<br /> <br /> * Launch the beast:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # pppd $GSM_DEVICE 115200 call bouygtel<br /> &lt;/pre&gt;<br /> <br /> ===Test===<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # ping www.google.fr<br /> &lt;/pre&gt;<br /> <br /> === Troubleshots ===<br /> * Might be needed after a successful IP setup:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # cp /etc/ppp/resolv.conf /etc/resolv.conf<br /> # route add default ppp0 (due to defaultroute option in ppp ?)<br /> &lt;/pre&gt;<br /> <br /> * To see what happened after having launched ''pppd'' or ''chat'':<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # tail -f /var/log/messages<br /> &lt;/pre&gt;<br /> <br /> ==GSM Muxing==<br /> ===Why ?===<br /> * By default AT commands usage is single threaded, ie only one program can open MODEM serial port and send AT commands at a given time. However it could be interesting to be able to send multiple AT commands from multiple programs at the same time, for example in order to: have a PPP link, send SMS and monitor network signal quality.<br /> * This can be done by a &quot;GSM mux&quot;, if your MODEM support the GSM 07.10 muxing norm (which is the case with our HiLo modules).<br /> ===Build gsmmux===<br /> * To build GSM mux (if not already done):<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;config&quot;&gt;<br /> Package Selection for the target ---&gt;<br /> Hardware handling ---&gt;<br /> [*] gsmmux<br /> Version to use (sagem) ---&gt;<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make<br /> &lt;/pre&gt;<br /> <br /> ===Use it===<br /> * If you have access to Sagem's version (you will get as much as virtual serial port as times you pass ''/dev/ptmx'' to the daemon):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # gsmMuxd -p $GSM_DEVICE -b 115200 -x /dev/ptmx /dev/ptmx /dev/ptmx<br /> &lt;/pre&gt;<br /> * Virtual serial ports will be created in ''/dev/pts/'':<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> /dev/pts/0 /dev/pts/1 /dev/pts/2<br /> &lt;/pre&gt;<br /> * to know how ''/dev/ptmx'' &amp; ''/dev/pts/x'' is working: [http://linux.die.net/man/4/ptmx]<br /> * If you have telnet or SSH sessions running ''/dev/pts/0'' may already be used ans so virtual serial ports will be allocated from ''/dev/pts/1'', etc...<br /> <br /> ===Going further===<br /> * In recent Linux kernels, there is also a driver to hanlde GSM muxing: n_gsm<br /> * People wanting to do a &quot;real&quot; phone can take a look at [http://ofono.org/documentation ofono]<br /> <br /> ==SMS using SMS server tools 3==<br /> Simple AT commands can be used to send SMS. If you need more flexibility or advanced management of your SMS, you can use SMS Server Tools 3.<br /> SMS Server Tools 3 is a SMS Gateway software which can send and receive short messages through GSM modems and mobile phones.<br /> <br /> ===Build SMS Server Tools3===<br /> * To build SMS Server Tools 3:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;config&quot;&gt;<br /> Package Selection for the target ---&gt;<br /> Networking applications ---&gt;<br /> [*] smstools3<br /> (1) Number of modems to support<br /> [*] Start SMS Server Tools at system boot<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make<br /> &lt;/pre&gt;<br /> <br /> === Configuration ===<br /> The SMS server can be configured by using a configuration file ''/etc/smsd.conf''.<br /> The following parameters have to be verified:<br /> * device: UART port used to communicate with the modem. If GSMUX is used, then this parameter is of form ''/dev/pts/x'' where is x is the number of the virtual port<br /> * baudrate: baudrate of the UART port<br /> * rtscts: must be yes if your modem needs CTS/RTS controls<br /> * incoming: say yes if you want to receive SMS<br /> <br /> === Usage ===<br /> Start the smsd deamon (if not already done at boot):<br /> &lt;pre class=&quot;host&quot;&gt;<br /> # /etc/init.d/S50smsd start<br /> &lt;/pre&gt;<br /> Then put a SMS file in the ''/var/spool/sms/outgoing/'' directory. Once placed a SMS will be sent. SMS file should be of the format defined [http://smstools3.kekekasvi.com/index.php?p=fileformat here].<br /> <br /> Incoming SMS can be read in the ''/var/spool/sms/incoming/'' directory.<br /> <br /> Reports and logs are also generated (''/var/log/smsd.log'').<br /> <br /> ==SMS using gnokii==<br /> <br /> [[Gnokii | See gnokii page]].<br /> <br /> ==Links==<br /> * [http://support.sagemcom.com/site/modele_fax.php?page=produit&amp;numero_type=22&amp;produit=877 HiLo 3G documentation at Sagem]<br /> * [http://www.libelium.com/tienda/catalog/images/arduino/AT_Commands.pdf HiLo AT Commands]<br /> * [http://www.developershome.com/sms/ SMS tutorial]<br /> * http://wiki.openmoko.org/wiki/Neo_1973_and_Neo_FreeRunner_gsm_modem<br /> * [http://www.anotherurl.com/library/at_test.htm AT Test commands]<br /> * http://www.gsm-modem.de/gsm-faq.html<br /> * [http://www.technologuepro.com/gsm/commande_at.htm Les commandes AT]<br /> * [http://smstools3.kekekasvi.com SMS Server Tools 3]<br /> <br /> [[Category:Wireless]]<br /> [[Category:Telephony]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=GSM/GPRS&diff=15135 GSM/GPRS 2023-08-17T13:21:35Z <p>JulienB: </p> <hr /> <div>This page will summarize informations to use the GSM/GPRS/3G module of the [[Wireless_extension_board|APF27Wireless board]], [[APF51Dev]] (optional), the [[APF6Dev]] (optional) or the RPi compatible Hats connected to OPOSxxDev RPi connector.<br /> <br /> ==Introduction==<br /> GSM/GPRS are generally driven through the RS-232 bus. AT commands are used to dialog with the module.<br /> * GSM MODEM of the [[Wireless_extension_board|APF27Wireless extension board (APW)]] is connected to the UART2 (/dev/ttySMX1) of the [[APF27]].<br /> * GSM/3G MODEM of the [[APF51Dev]] is connected to the i.MX processor through an UART implemented in the FPGA. So the corresponding bitfile has to loaded before trying to access the MODEM.<br /> * GSM/3G MODEM of the [[APF6Dev]] is connected to the UART3 of the i.MX6 processor. <br /> They are all using a Sagem's Hilo module. Hilo AT commands can be found [http://support.sagemcom.com/site/livret/URD1_OTL_5725_1_008_72807_-_AT_Command_Set_for_SAGEMCOM_Modules__Ed_14_06_dated_11_May_2012.pdf here]<br /> <br /> ==Linux configuration (APF27Dev only)==<br /> * Linux will have to be configured in order to tell that an APW is connected to your [[APF27Dev]]:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make linux-menuconfig<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;config&quot;&gt;<br /> System Type ---&gt;<br /> Freescale MXC Implementations ---&gt;<br /> ...<br /> Extension board (Wireless (APW)) ---&gt;<br /> [*] GSM/GPRS Modem (NEW)<br /> [ ] Bluetooth &amp; WiFi module (NEW)<br /> [ ] CSI (Camera) pass-through (NEW)<br /> [ ] GPS module (NEW)<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make linux<br /> &lt;/pre&gt;<br /> * reflash you Linux kernel<br /> <br /> ==Configure serial port==<br /> ====APF27====<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttySMX1 (or /dev/ttymxc1 on recent kernels)<br /> # stty -F $GSM_DEVICE raw -echo -echoe -echok 115200<br /> &lt;/pre&gt;<br /> <br /> ====APF51Dev====<br /> <br /> {{Note|Don't forget to put &quot;Wireless&quot; J42 jumper (near microSD connector) '''AND''' power on FPGA Bank 3 (with corresponding J39 jumper).}}<br /> * On APF51Dev, GSM/3G module is accessed through serial ports synthetized in APF51's FPGA. So we have to load it first. (Needed dual UARTs FPGA firmware can be found under armadeus-4.0 distribution in ''firmware/pod_scripts'' directory, with the [[POD]] script needed to regenerate it, and is by default installed in rootfs).<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # load_fpga /lib/firmware/fpga/apf51_gsm_gps_firmware.bin<br /> &lt;/pre&gt;<br /> * Once firmware loaded, drivers related to FPGA can be used :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # modprobe irq_ocore<br /> # modprobe 8250<br /> Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled<br /> # modprobe twin_uarts_irq_mng<br /> # modprobe twin_uarts_16750<br /> serial8250.0: ttyS0 at MMIO 0xb8000020 (irq = 320) is a TI16750<br /> serial8250.0: ttyS1 at MMIO 0xb8000040 (irq = 321) is a TI16750<br /> &lt;/pre&gt;<br /> * Bring MODEM out of reset state (POK_IN/PWON pin, connected to [[APF51_PMIC#GPIO|PMIC GPIO6]]):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # modprobe wm831x-gpio<br /> # echo 245 &gt; /sys/class/gpio/export<br /> # echo out &gt; /sys/class/gpio/gpio245/direction<br /> # echo 1 &gt; /sys/class/gpio/gpio245/value<br /> &lt;/pre&gt;<br /> * Configure serial port:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # ls /dev/ttyS*<br /> /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3<br /> &lt;/pre&gt;<br /> <br /> * If the /dev/ttyS[0-1] files don't exist, create it/them with ''mknod'' :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mknod /dev/ttyS0 c 4 64<br /> # mknod /dev/ttyS1 c 4 65<br /> &lt;/pre&gt;<br /> Then :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttyS0<br /> # stty -F $GSM_DEVICE -echo -echoe -echok 115200 crtscts<br /> &lt;/pre&gt;<br /> <br /> ====APF6Dev====<br /> * Power up the chip. (GSM_PWR_EN is connected to the GPIO7_13)<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 205 &gt; /sys/class/gpio/export <br /> # echo out &gt; /sys/class/gpio/gpio205/direction<br /> # echo 1 &gt; /sys/class/gpio/gpio205/value<br /> &lt;/pre&gt;<br /> <br /> * Start it by setting a low level pulse during about 2 seconds on the POKIN line (POKIN is connected to the GPIO1_4).<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 4 &gt; /sys/class/gpio/export <br /> # echo out &gt; /sys/class/gpio/gpio4/direction<br /> # echo 1 &gt; /sys/class/gpio/gpio4/value<br /> # sleep 2<br /> # echo 0 &gt; /sys/class/gpio/gpio4/value<br /> &lt;/pre&gt;<br /> <br /> * Configure the serial port<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttymxc2<br /> # stty -F $GSM_DEVICE -echo -echoe -echok 115200<br /> &lt;/pre&gt;<br /> <br /> ====OPOSxxDev with RPi connector====<br /> * Configure the serial port<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttymxc1<br /> # stty -F $GSM_DEVICE -echo -echoe -echok 115200<br /> &lt;/pre&gt;<br /> <br /> ==Basic Usage==<br /> ===Sending AT commands &quot;manually&quot;===<br /> * Sending AT commands with ''minicom/microcom'' utility (one of the command coming with [[busybox]]): <br /> <br /> {{Note|minicom has been removed in recent BSP, so use microcom instead}}<br /> <br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # microcom $GSM_DEVICE<br /> &lt;/pre&gt;<br /> ( To exit ''microcom'' you will have to type '''&lt;CTRL-x&gt;''' )<br /> * Check module presence:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ATI3<br /> SAGEM HiC,A.005.00<br /> <br /> OK<br /> &lt;/pre&gt;<br /> <br /> {{Note| If no echo are printed on serial console: you can't see what you're typing. In that case, to reactivate the echo, use:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ATE1<br /> &lt;/pre&gt;<br /> }}<br /> <br /> {{Note| By default, the module starts in auto baudrate. This mays result in loss of communication with baud rate higher than 19200 bauds. To avoid problems, the baud rate has to be fixed (here to 115200 bauds):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+IPR=115200<br /> &lt;/pre&gt;<br /> }}<br /> <br /> * Get constructor name:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CGMI<br /> SAGEM<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Get model name:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CGMM<br /> HILO GPRS<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Enter PIN code (here 0000). '''!! Use your own and beware that you will only get 3 tries !!:'''<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CPIN=&quot;0000&quot;<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Check PIN code status:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CPIN?<br /> +CPIN: READY<br /> <br /> OK<br /> &lt;/pre&gt;<br /> {{Note|Don't launch further AT commands if PIN code wasn't entered successfully}}<br /> <br /> * Check module status (0 Ready, 1 Unavailable, 2 Status unknown, 3 Ringing, 4 Call in progress, 5 Asleep):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CPAS<br /> +CPAS: 0<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Get Indicator control (&lt;battchg&gt;[0-4],&lt;signal&gt;[0-4],&lt;service&gt;0/1,&lt;message&gt;0/1,&lt;call&gt;0/1,&lt;smsfull&gt;0/1):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CIND?<br /> +CIND: 0,4,1,0,0,0,1<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Get signal quality (should be better than 12/99):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CSQ<br /> +CSQ: 24,99<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Voice call &quot;123456789&quot; (; is important here to signify a voice call, otherwise a data call is tried and may fail if you don't have the right subscribe)<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ATD&quot;123456789&quot;;<br /> OK<br /> &lt;/pre&gt;<br /> * Terminate current call:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ATH<br /> OK<br /> &lt;/pre&gt;<br /> <br /> ===Sending AT commands in shell scripts===<br /> <br /> &lt;source lang=&quot;bash&quot;&gt;<br /> GSM_DEVICE=/dev/ttyXXX<br /> send_at_cmd()<br /> {<br /> echo -e -n &quot;$1\015&quot; &gt; $GSM_DEVICE<br /> sleep 1 # Adjustable ! (usleep)<br /> }<br /> <br /> send_at_cmd AT<br /> &lt;/source&gt;<br /> <br /> * See ''target/test/test_gsm.sh'' for more details<br /> <br /> ==Sending SMS==<br /> * Supposing you are already connected to the modem with cu<br /> * Check if you can send SMS with your SIM card (you should get +CMGF: (0,1))<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CMGF=?<br /> &lt;/pre&gt;<br /> * If OK, switch to SMS sending mode:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CMGF=1<br /> &lt;/pre&gt;<br /> * Write a message for 0661234567 phone number:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CMGW=&quot;0661326109&quot;<br /> <br /> &gt; Hey ! How are you doing ??<br /> &gt; &lt;-- Ctrl+z to end SMS here<br /> <br /> +CMGW: 8<br /> &lt;/pre&gt;<br /> * +CMGW give you the number of your SMS saved in SIM card or phone memory<br /> * Then, at anytime, you can send your SMS with (pass previous number as parameter):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CMSS=8<br /> &lt;/pre&gt;<br /> <br /> ==Tools to look at==<br /> * http://www.developershome.com/sms/freeLibForSMS.asp<br /> * http://www.gnokii.org/<br /> * http://www.alamin.org/en/index.html<br /> * http://www.gammu.org/wiki/index.php?title=Gammu:Main_Page<br /> * http://gatling.ikk.sztaki.hu/~kissg/gsm/index.html<br /> <br /> ==Data tranfers (EDGE/3G)==<br /> <br /> ===PPP installation (done by default on APF51)===<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make linux-menuconfig<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;config&quot;&gt;<br /> Device Drivers ---&gt;<br /> [*] Network device support ---&gt;<br /> &lt;M&gt; PPP (point-to-point protocol) support<br /> [ ] PPP multilink support (EXPERIMENTAL)<br /> [ ] PPP filtering<br /> &lt;M&gt; PPP support for async serial ports<br /> &lt; &gt; PPP support for sync tty ports<br /> &lt; &gt; PPP Deflate compression<br /> &lt; &gt; PPP BSD-Compress compression<br /> &lt; &gt; PPP MPPE compression (encryption) (EXPERIMENTAL)<br /> &lt; &gt; PPP over Ethernet (EXPERIMENTAL)<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;config&quot;&gt;<br /> Package Selection for the target ---&gt;<br /> Networking applications ---&gt;<br /> [*] pppd<br /> [ ] filtering<br /> [ ] radius<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make linux &amp;&amp; make<br /> &lt;/pre&gt;<br /> <br /> * reflash kernel &amp; rootfs<br /> <br /> ===PPP configuration===<br /> {{Note|Following instructions are given for the French operator &quot;Bouygtel&quot; and may need to be ajusted accordingly, depending on your operator/country}}<br /> <br /> * Create a &quot;chat&quot; script that will be used to initiate MODEM dialup (here we use the &quot;cat &gt; xxxx &lt;&lt; EOF trick&quot; to automatically create the file, but you can also manually edit it with ''vi'' or ''nano''):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir -p /etc/chatscripts/<br /> # cat &gt; /etc/chatscripts/bouygtel &lt;&lt;EOF<br /> ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO ANSWER' ABORT DELAYED ABORT ERROR<br /> '' AT<br /> OK AT+IPR=115200<br /> OK AT+CPIN=&quot;0000&quot;<br /> OK AT+CFUN=1<br /> OK AT+COPS?<br /> OK AT+CSQ<br /> OK 'AT+CGDCONT=1,&quot;IP&quot;,&quot;ebouygtel.com&quot;,&quot;&quot;,0,0'<br /> OK 'AT&amp;FE0Q0V1'<br /> OK 'ATD*99#'<br /> CONNECT &quot;&quot;<br /> EOF<br /> &lt;/pre&gt;<br /> * Don't forget to set the baudrate (default: 115200) to have a stable communication between the modem and the processor<br /> * Don't forget to update &quot;AT+CPIN=&quot; with your real PIN code and &quot;AT+CGDCONT&quot; and &quot;ATD*99#&quot; with your operator parameters.<br /> * If you want to test your chat script (verbose mode -v, on console -s, with 5 second timeout by default for commands -t 5), then launch:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/sbin/chat -v -s -t 5 -f /etc/chatscripts/bouygtel &gt; $GSM_DEVICE &lt; $GSM_DEVICE<br /> &lt;/pre&gt;<br /> * If this test was OK, you may have to poweroff/poweron the MODEM to bring it to its initial state and go further.<br /> <br /> ====For '''APF51'''====<br /> * create the PPPd config files (''/etc/ppp/peers/bouygtel'' and ''/etc/ppp/options.ttyS0''):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir -p /etc/ppp/peers/<br /> # cat &gt; /etc/ppp/peers/bouygtel &lt;&lt;EOF<br /> noauth<br /> connect &quot;/usr/sbin/chat -v -t 5 -f /etc/chatscripts/bouygtel&quot;<br /> debug<br /> ttyS0<br /> defaultroute<br /> noipdefault<br /> usepeerdns<br /> EOF<br /> <br /> # cat &gt; /etc/ppp/options.ttyS0 &lt;&lt;EOF<br /> 115200<br /> EOF<br /> &lt;/pre&gt;<br /> <br /> ====For '''APF27'''====<br /> {{Note| Check if /dev/ttySMX1 exists, if not create it with :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> mknod /dev/ttySMX1 c 204 42<br /> &lt;/pre&gt;<br /> }}<br /> * create the PPPd config files (''/etc/ppp/peers/bouygtel'' and ''/etc/ppp/options.ttySMX1''):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir -p /etc/ppp/peers/<br /> # cat &gt; /etc/ppp/peers/bouygtel &lt;&lt;EOF<br /> noauth<br /> connect &quot;/usr/sbin/chat -v -t 5 -f /etc/chatscripts/bouygtel&quot;<br /> debug<br /> ttySMX1<br /> defaultroute<br /> noipdefault<br /> usepeerdns<br /> EOF<br /> <br /> # cat &gt; /etc/ppp/options.ttySMX1 &lt;&lt;EOF<br /> 115200<br /> EOF<br /> &lt;/pre&gt;<br /> <br /> ===PPP Usage===<br /> * Load PPP module:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # modprobe ppp (APF27)<br /> or<br /> # modprobe ppp_async (APF51)<br /> &lt;/pre&gt;<br /> * Setup serial port name depending on your platform (''/dev/ttyS0'' on APF51, ''/dev/ttySMX1'' on APF27)<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttyS0<br /> or<br /> # export GSM_DEVICE=/dev/ttySMX1<br /> &lt;/pre&gt;<br /> <br /> * Launch the beast:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # pppd $GSM_DEVICE 115200 call bouygtel<br /> &lt;/pre&gt;<br /> <br /> ===Test===<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # ping www.google.fr<br /> &lt;/pre&gt;<br /> <br /> === Troubleshots ===<br /> * Might be needed after a successful IP setup:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # cp /etc/ppp/resolv.conf /etc/resolv.conf<br /> # route add default ppp0 (due to defaultroute option in ppp ?)<br /> &lt;/pre&gt;<br /> <br /> * To see what happened after having launched ''pppd'' or ''chat'':<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # tail -f /var/log/messages<br /> &lt;/pre&gt;<br /> <br /> ==GSM Muxing==<br /> ===Why ?===<br /> * By default AT commands usage is single threaded, ie only one program can open MODEM serial port and send AT commands at a given time. However it could be interesting to be able to send multiple AT commands from multiple programs at the same time, for example in order to: have a PPP link, send SMS and monitor network signal quality.<br /> * This can be done by a &quot;GSM mux&quot;, if your MODEM support the GSM 07.10 muxing norm (which is the case with our HiLo modules).<br /> ===Build gsmmux===<br /> * To build GSM mux (if not already done):<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;config&quot;&gt;<br /> Package Selection for the target ---&gt;<br /> Hardware handling ---&gt;<br /> [*] gsmmux<br /> Version to use (sagem) ---&gt;<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make<br /> &lt;/pre&gt;<br /> <br /> ===Use it===<br /> * If you have access to Sagem's version (you will get as much as virtual serial port as times you pass ''/dev/ptmx'' to the daemon):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # gsmMuxd -p $GSM_DEVICE -b 115200 -x /dev/ptmx /dev/ptmx /dev/ptmx<br /> &lt;/pre&gt;<br /> * Virtual serial ports will be created in ''/dev/pts/'':<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> /dev/pts/0 /dev/pts/1 /dev/pts/2<br /> &lt;/pre&gt;<br /> * to know how ''/dev/ptmx'' &amp; ''/dev/pts/x'' is working: [http://linux.die.net/man/4/ptmx]<br /> * If you have telnet or SSH sessions running ''/dev/pts/0'' may already be used ans so virtual serial ports will be allocated from ''/dev/pts/1'', etc...<br /> <br /> ===Going further===<br /> * In recent Linux kernels, there is also a driver to hanlde GSM muxing: n_gsm<br /> * People wanting to do a &quot;real&quot; phone can take a look at [http://ofono.org/documentation ofono]<br /> <br /> ==SMS using SMS server tools 3==<br /> Simple AT commands can be used to send SMS. If you need more flexibility or advanced management of your SMS, you can use SMS Server Tools 3.<br /> SMS Server Tools 3 is a SMS Gateway software which can send and receive short messages through GSM modems and mobile phones.<br /> <br /> ===Build SMS Server Tools3===<br /> * To build SMS Server Tools 3:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;config&quot;&gt;<br /> Package Selection for the target ---&gt;<br /> Networking applications ---&gt;<br /> [*] smstools3<br /> (1) Number of modems to support<br /> [*] Start SMS Server Tools at system boot<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make<br /> &lt;/pre&gt;<br /> <br /> === Configuration ===<br /> The SMS server can be configured by using a configuration file ''/etc/smsd.conf''.<br /> The following parameters have to be verified:<br /> * device: UART port used to communicate with the modem. If GSMUX is used, then this parameter is of form ''/dev/pts/x'' where is x is the number of the virtual port<br /> * baudrate: baudrate of the UART port<br /> * rtscts: must be yes if your modem needs CTS/RTS controls<br /> * incoming: say yes if you want to receive SMS<br /> <br /> === Usage ===<br /> Start the smsd deamon (if not already done at boot):<br /> &lt;pre class=&quot;host&quot;&gt;<br /> # /etc/init.d/S50smsd start<br /> &lt;/pre&gt;<br /> Then put a SMS file in the ''/var/spool/sms/outgoing/'' directory. Once placed a SMS will be sent. SMS file should be of the format defined [http://smstools3.kekekasvi.com/index.php?p=fileformat here].<br /> <br /> Incoming SMS can be read in the ''/var/spool/sms/incoming/'' directory.<br /> <br /> Reports and logs are also generated (''/var/log/smsd.log'').<br /> <br /> ==SMS using gnokii==<br /> <br /> [[Gnokii | See gnokii page]].<br /> <br /> ==Links==<br /> * [http://support.sagemcom.com/site/modele_fax.php?page=produit&amp;numero_type=22&amp;produit=877 HiLo 3G documentation at Sagem]<br /> * [http://www.libelium.com/tienda/catalog/images/arduino/AT_Commands.pdf HiLo AT Commands]<br /> * [http://www.developershome.com/sms/ SMS tutorial]<br /> * http://wiki.openmoko.org/wiki/Neo_1973_and_Neo_FreeRunner_gsm_modem<br /> * [http://www.anotherurl.com/library/at_test.htm AT Test commands]<br /> * http://www.gsm-modem.de/gsm-faq.html<br /> * [http://www.technologuepro.com/gsm/commande_at.htm Les commandes AT]<br /> * [http://smstools3.kekekasvi.com SMS Server Tools 3]<br /> <br /> [[Category:Wireless]]<br /> [[Category:Telephony]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=GSM/GPRS&diff=15134 GSM/GPRS 2023-08-17T13:20:24Z <p>JulienB: /* APF6Dev */</p> <hr /> <div>This page will summarize informations to use the GSM/GPRS/3G module of the [[Wireless_extension_board|APF27Wireless board]], [[APF51Dev]] (optional) and the [[APF6Dev]] (optional).<br /> <br /> ==Introduction==<br /> GSM/GPRS are generally driven through the RS-232 bus. AT commands are used to dialog with the module.<br /> * GSM MODEM of the [[Wireless_extension_board|APF27Wireless extension board (APW)]] is connected to the UART2 (/dev/ttySMX1) of the [[APF27]].<br /> * GSM/3G MODEM of the [[APF51Dev]] is connected to the i.MX processor through an UART implemented in the FPGA. So the corresponding bitfile has to loaded before trying to access the MODEM.<br /> * GSM/3G MODEM of the [[APF6Dev]] is connected to the UART3 of the i.MX6 processor. <br /> They are all using a Sagem's Hilo module. Hilo AT commands can be found [http://support.sagemcom.com/site/livret/URD1_OTL_5725_1_008_72807_-_AT_Command_Set_for_SAGEMCOM_Modules__Ed_14_06_dated_11_May_2012.pdf here]<br /> <br /> ==Linux configuration (APF27Dev only)==<br /> * Linux will have to be configured in order to tell that an APW is connected to your [[APF27Dev]]:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make linux-menuconfig<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;config&quot;&gt;<br /> System Type ---&gt;<br /> Freescale MXC Implementations ---&gt;<br /> ...<br /> Extension board (Wireless (APW)) ---&gt;<br /> [*] GSM/GPRS Modem (NEW)<br /> [ ] Bluetooth &amp; WiFi module (NEW)<br /> [ ] CSI (Camera) pass-through (NEW)<br /> [ ] GPS module (NEW)<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make linux<br /> &lt;/pre&gt;<br /> * reflash you Linux kernel<br /> <br /> ==Configure serial port==<br /> ====APF27====<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttySMX1 (or /dev/ttymxc1 on recent kernels)<br /> # stty -F $GSM_DEVICE raw -echo -echoe -echok 115200<br /> &lt;/pre&gt;<br /> <br /> ====APF51Dev====<br /> <br /> {{Note|Don't forget to put &quot;Wireless&quot; J42 jumper (near microSD connector) '''AND''' power on FPGA Bank 3 (with corresponding J39 jumper).}}<br /> * On APF51Dev, GSM/3G module is accessed through serial ports synthetized in APF51's FPGA. So we have to load it first. (Needed dual UARTs FPGA firmware can be found under armadeus-4.0 distribution in ''firmware/pod_scripts'' directory, with the [[POD]] script needed to regenerate it, and is by default installed in rootfs).<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # load_fpga /lib/firmware/fpga/apf51_gsm_gps_firmware.bin<br /> &lt;/pre&gt;<br /> * Once firmware loaded, drivers related to FPGA can be used :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # modprobe irq_ocore<br /> # modprobe 8250<br /> Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled<br /> # modprobe twin_uarts_irq_mng<br /> # modprobe twin_uarts_16750<br /> serial8250.0: ttyS0 at MMIO 0xb8000020 (irq = 320) is a TI16750<br /> serial8250.0: ttyS1 at MMIO 0xb8000040 (irq = 321) is a TI16750<br /> &lt;/pre&gt;<br /> * Bring MODEM out of reset state (POK_IN/PWON pin, connected to [[APF51_PMIC#GPIO|PMIC GPIO6]]):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # modprobe wm831x-gpio<br /> # echo 245 &gt; /sys/class/gpio/export<br /> # echo out &gt; /sys/class/gpio/gpio245/direction<br /> # echo 1 &gt; /sys/class/gpio/gpio245/value<br /> &lt;/pre&gt;<br /> * Configure serial port:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # ls /dev/ttyS*<br /> /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3<br /> &lt;/pre&gt;<br /> <br /> * If the /dev/ttyS[0-1] files don't exist, create it/them with ''mknod'' :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mknod /dev/ttyS0 c 4 64<br /> # mknod /dev/ttyS1 c 4 65<br /> &lt;/pre&gt;<br /> Then :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttyS0<br /> # stty -F $GSM_DEVICE -echo -echoe -echok 115200 crtscts<br /> &lt;/pre&gt;<br /> <br /> ====APF6Dev====<br /> * Power up the chip. (GSM_PWR_EN is connected to the GPIO7_13)<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 205 &gt; /sys/class/gpio/export <br /> # echo out &gt; /sys/class/gpio/gpio205/direction<br /> # echo 1 &gt; /sys/class/gpio/gpio205/value<br /> &lt;/pre&gt;<br /> <br /> * Start it by setting a low level pulse during about 2 seconds on the POKIN line (POKIN is connected to the GPIO1_4).<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 4 &gt; /sys/class/gpio/export <br /> # echo out &gt; /sys/class/gpio/gpio4/direction<br /> # echo 1 &gt; /sys/class/gpio/gpio4/value<br /> # sleep 2<br /> # echo 0 &gt; /sys/class/gpio/gpio4/value<br /> &lt;/pre&gt;<br /> <br /> * Configure the serial port<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttymxc2<br /> # stty -F $GSM_DEVICE -echo -echoe -echok 115200<br /> &lt;/pre&gt;<br /> <br /> ====OPOSxxDev with RPi connector====<br /> * Configure the serial port<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttymxc1<br /> # stty -F $GSM_DEVICE -echo -echoe -echok 115200<br /> &lt;/pre&gt;<br /> <br /> ==Basic Usage==<br /> ===Sending AT commands &quot;manually&quot;===<br /> * Sending AT commands with ''minicom/microcom'' utility (one of the command coming with [[busybox]]): <br /> <br /> {{Note|minicom has been removed in recent BSP, so use microcom instead}}<br /> <br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # microcom $GSM_DEVICE<br /> &lt;/pre&gt;<br /> ( To exit ''microcom'' you will have to type '''&lt;CTRL-x&gt;''' )<br /> * Check module presence:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ATI3<br /> SAGEM HiC,A.005.00<br /> <br /> OK<br /> &lt;/pre&gt;<br /> <br /> {{Note| If no echo are printed on serial console: you can't see what you're typing. In that case, to reactivate the echo, use:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ATE1<br /> &lt;/pre&gt;<br /> }}<br /> <br /> {{Note| By default, the module starts in auto baudrate. This mays result in loss of communication with baud rate higher than 19200 bauds. To avoid problems, the baud rate has to be fixed (here to 115200 bauds):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+IPR=115200<br /> &lt;/pre&gt;<br /> }}<br /> <br /> * Get constructor name:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CGMI<br /> SAGEM<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Get model name:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CGMM<br /> HILO GPRS<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Enter PIN code (here 0000). '''!! Use your own and beware that you will only get 3 tries !!:'''<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CPIN=&quot;0000&quot;<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Check PIN code status:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CPIN?<br /> +CPIN: READY<br /> <br /> OK<br /> &lt;/pre&gt;<br /> {{Note|Don't launch further AT commands if PIN code wasn't entered successfully}}<br /> <br /> * Check module status (0 Ready, 1 Unavailable, 2 Status unknown, 3 Ringing, 4 Call in progress, 5 Asleep):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CPAS<br /> +CPAS: 0<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Get Indicator control (&lt;battchg&gt;[0-4],&lt;signal&gt;[0-4],&lt;service&gt;0/1,&lt;message&gt;0/1,&lt;call&gt;0/1,&lt;smsfull&gt;0/1):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CIND?<br /> +CIND: 0,4,1,0,0,0,1<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Get signal quality (should be better than 12/99):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CSQ<br /> +CSQ: 24,99<br /> <br /> OK<br /> &lt;/pre&gt;<br /> * Voice call &quot;123456789&quot; (; is important here to signify a voice call, otherwise a data call is tried and may fail if you don't have the right subscribe)<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ATD&quot;123456789&quot;;<br /> OK<br /> &lt;/pre&gt;<br /> * Terminate current call:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ATH<br /> OK<br /> &lt;/pre&gt;<br /> <br /> ===Sending AT commands in shell scripts===<br /> <br /> &lt;source lang=&quot;bash&quot;&gt;<br /> GSM_DEVICE=/dev/ttyXXX<br /> send_at_cmd()<br /> {<br /> echo -e -n &quot;$1\015&quot; &gt; $GSM_DEVICE<br /> sleep 1 # Adjustable ! (usleep)<br /> }<br /> <br /> send_at_cmd AT<br /> &lt;/source&gt;<br /> <br /> * See ''target/test/test_gsm.sh'' for more details<br /> <br /> ==Sending SMS==<br /> * Supposing you are already connected to the modem with cu<br /> * Check if you can send SMS with your SIM card (you should get +CMGF: (0,1))<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CMGF=?<br /> &lt;/pre&gt;<br /> * If OK, switch to SMS sending mode:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CMGF=1<br /> &lt;/pre&gt;<br /> * Write a message for 0661234567 phone number:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CMGW=&quot;0661326109&quot;<br /> <br /> &gt; Hey ! How are you doing ??<br /> &gt; &lt;-- Ctrl+z to end SMS here<br /> <br /> +CMGW: 8<br /> &lt;/pre&gt;<br /> * +CMGW give you the number of your SMS saved in SIM card or phone memory<br /> * Then, at anytime, you can send your SMS with (pass previous number as parameter):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> AT+CMSS=8<br /> &lt;/pre&gt;<br /> <br /> ==Tools to look at==<br /> * http://www.developershome.com/sms/freeLibForSMS.asp<br /> * http://www.gnokii.org/<br /> * http://www.alamin.org/en/index.html<br /> * http://www.gammu.org/wiki/index.php?title=Gammu:Main_Page<br /> * http://gatling.ikk.sztaki.hu/~kissg/gsm/index.html<br /> <br /> ==Data tranfers (EDGE/3G)==<br /> <br /> ===PPP installation (done by default on APF51)===<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make linux-menuconfig<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;config&quot;&gt;<br /> Device Drivers ---&gt;<br /> [*] Network device support ---&gt;<br /> &lt;M&gt; PPP (point-to-point protocol) support<br /> [ ] PPP multilink support (EXPERIMENTAL)<br /> [ ] PPP filtering<br /> &lt;M&gt; PPP support for async serial ports<br /> &lt; &gt; PPP support for sync tty ports<br /> &lt; &gt; PPP Deflate compression<br /> &lt; &gt; PPP BSD-Compress compression<br /> &lt; &gt; PPP MPPE compression (encryption) (EXPERIMENTAL)<br /> &lt; &gt; PPP over Ethernet (EXPERIMENTAL)<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;config&quot;&gt;<br /> Package Selection for the target ---&gt;<br /> Networking applications ---&gt;<br /> [*] pppd<br /> [ ] filtering<br /> [ ] radius<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make linux &amp;&amp; make<br /> &lt;/pre&gt;<br /> <br /> * reflash kernel &amp; rootfs<br /> <br /> ===PPP configuration===<br /> {{Note|Following instructions are given for the French operator &quot;Bouygtel&quot; and may need to be ajusted accordingly, depending on your operator/country}}<br /> <br /> * Create a &quot;chat&quot; script that will be used to initiate MODEM dialup (here we use the &quot;cat &gt; xxxx &lt;&lt; EOF trick&quot; to automatically create the file, but you can also manually edit it with ''vi'' or ''nano''):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir -p /etc/chatscripts/<br /> # cat &gt; /etc/chatscripts/bouygtel &lt;&lt;EOF<br /> ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO ANSWER' ABORT DELAYED ABORT ERROR<br /> '' AT<br /> OK AT+IPR=115200<br /> OK AT+CPIN=&quot;0000&quot;<br /> OK AT+CFUN=1<br /> OK AT+COPS?<br /> OK AT+CSQ<br /> OK 'AT+CGDCONT=1,&quot;IP&quot;,&quot;ebouygtel.com&quot;,&quot;&quot;,0,0'<br /> OK 'AT&amp;FE0Q0V1'<br /> OK 'ATD*99#'<br /> CONNECT &quot;&quot;<br /> EOF<br /> &lt;/pre&gt;<br /> * Don't forget to set the baudrate (default: 115200) to have a stable communication between the modem and the processor<br /> * Don't forget to update &quot;AT+CPIN=&quot; with your real PIN code and &quot;AT+CGDCONT&quot; and &quot;ATD*99#&quot; with your operator parameters.<br /> * If you want to test your chat script (verbose mode -v, on console -s, with 5 second timeout by default for commands -t 5), then launch:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/sbin/chat -v -s -t 5 -f /etc/chatscripts/bouygtel &gt; $GSM_DEVICE &lt; $GSM_DEVICE<br /> &lt;/pre&gt;<br /> * If this test was OK, you may have to poweroff/poweron the MODEM to bring it to its initial state and go further.<br /> <br /> ====For '''APF51'''====<br /> * create the PPPd config files (''/etc/ppp/peers/bouygtel'' and ''/etc/ppp/options.ttyS0''):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir -p /etc/ppp/peers/<br /> # cat &gt; /etc/ppp/peers/bouygtel &lt;&lt;EOF<br /> noauth<br /> connect &quot;/usr/sbin/chat -v -t 5 -f /etc/chatscripts/bouygtel&quot;<br /> debug<br /> ttyS0<br /> defaultroute<br /> noipdefault<br /> usepeerdns<br /> EOF<br /> <br /> # cat &gt; /etc/ppp/options.ttyS0 &lt;&lt;EOF<br /> 115200<br /> EOF<br /> &lt;/pre&gt;<br /> <br /> ====For '''APF27'''====<br /> {{Note| Check if /dev/ttySMX1 exists, if not create it with :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> mknod /dev/ttySMX1 c 204 42<br /> &lt;/pre&gt;<br /> }}<br /> * create the PPPd config files (''/etc/ppp/peers/bouygtel'' and ''/etc/ppp/options.ttySMX1''):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir -p /etc/ppp/peers/<br /> # cat &gt; /etc/ppp/peers/bouygtel &lt;&lt;EOF<br /> noauth<br /> connect &quot;/usr/sbin/chat -v -t 5 -f /etc/chatscripts/bouygtel&quot;<br /> debug<br /> ttySMX1<br /> defaultroute<br /> noipdefault<br /> usepeerdns<br /> EOF<br /> <br /> # cat &gt; /etc/ppp/options.ttySMX1 &lt;&lt;EOF<br /> 115200<br /> EOF<br /> &lt;/pre&gt;<br /> <br /> ===PPP Usage===<br /> * Load PPP module:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # modprobe ppp (APF27)<br /> or<br /> # modprobe ppp_async (APF51)<br /> &lt;/pre&gt;<br /> * Setup serial port name depending on your platform (''/dev/ttyS0'' on APF51, ''/dev/ttySMX1'' on APF27)<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export GSM_DEVICE=/dev/ttyS0<br /> or<br /> # export GSM_DEVICE=/dev/ttySMX1<br /> &lt;/pre&gt;<br /> <br /> * Launch the beast:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # pppd $GSM_DEVICE 115200 call bouygtel<br /> &lt;/pre&gt;<br /> <br /> ===Test===<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # ping www.google.fr<br /> &lt;/pre&gt;<br /> <br /> === Troubleshots ===<br /> * Might be needed after a successful IP setup:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # cp /etc/ppp/resolv.conf /etc/resolv.conf<br /> # route add default ppp0 (due to defaultroute option in ppp ?)<br /> &lt;/pre&gt;<br /> <br /> * To see what happened after having launched ''pppd'' or ''chat'':<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # tail -f /var/log/messages<br /> &lt;/pre&gt;<br /> <br /> ==GSM Muxing==<br /> ===Why ?===<br /> * By default AT commands usage is single threaded, ie only one program can open MODEM serial port and send AT commands at a given time. However it could be interesting to be able to send multiple AT commands from multiple programs at the same time, for example in order to: have a PPP link, send SMS and monitor network signal quality.<br /> * This can be done by a &quot;GSM mux&quot;, if your MODEM support the GSM 07.10 muxing norm (which is the case with our HiLo modules).<br /> ===Build gsmmux===<br /> * To build GSM mux (if not already done):<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;config&quot;&gt;<br /> Package Selection for the target ---&gt;<br /> Hardware handling ---&gt;<br /> [*] gsmmux<br /> Version to use (sagem) ---&gt;<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make<br /> &lt;/pre&gt;<br /> <br /> ===Use it===<br /> * If you have access to Sagem's version (you will get as much as virtual serial port as times you pass ''/dev/ptmx'' to the daemon):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # gsmMuxd -p $GSM_DEVICE -b 115200 -x /dev/ptmx /dev/ptmx /dev/ptmx<br /> &lt;/pre&gt;<br /> * Virtual serial ports will be created in ''/dev/pts/'':<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> /dev/pts/0 /dev/pts/1 /dev/pts/2<br /> &lt;/pre&gt;<br /> * to know how ''/dev/ptmx'' &amp; ''/dev/pts/x'' is working: [http://linux.die.net/man/4/ptmx]<br /> * If you have telnet or SSH sessions running ''/dev/pts/0'' may already be used ans so virtual serial ports will be allocated from ''/dev/pts/1'', etc...<br /> <br /> ===Going further===<br /> * In recent Linux kernels, there is also a driver to hanlde GSM muxing: n_gsm<br /> * People wanting to do a &quot;real&quot; phone can take a look at [http://ofono.org/documentation ofono]<br /> <br /> ==SMS using SMS server tools 3==<br /> Simple AT commands can be used to send SMS. If you need more flexibility or advanced management of your SMS, you can use SMS Server Tools 3.<br /> SMS Server Tools 3 is a SMS Gateway software which can send and receive short messages through GSM modems and mobile phones.<br /> <br /> ===Build SMS Server Tools3===<br /> * To build SMS Server Tools 3:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;config&quot;&gt;<br /> Package Selection for the target ---&gt;<br /> Networking applications ---&gt;<br /> [*] smstools3<br /> (1) Number of modems to support<br /> [*] Start SMS Server Tools at system boot<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make<br /> &lt;/pre&gt;<br /> <br /> === Configuration ===<br /> The SMS server can be configured by using a configuration file ''/etc/smsd.conf''.<br /> The following parameters have to be verified:<br /> * device: UART port used to communicate with the modem. If GSMUX is used, then this parameter is of form ''/dev/pts/x'' where is x is the number of the virtual port<br /> * baudrate: baudrate of the UART port<br /> * rtscts: must be yes if your modem needs CTS/RTS controls<br /> * incoming: say yes if you want to receive SMS<br /> <br /> === Usage ===<br /> Start the smsd deamon (if not already done at boot):<br /> &lt;pre class=&quot;host&quot;&gt;<br /> # /etc/init.d/S50smsd start<br /> &lt;/pre&gt;<br /> Then put a SMS file in the ''/var/spool/sms/outgoing/'' directory. Once placed a SMS will be sent. SMS file should be of the format defined [http://smstools3.kekekasvi.com/index.php?p=fileformat here].<br /> <br /> Incoming SMS can be read in the ''/var/spool/sms/incoming/'' directory.<br /> <br /> Reports and logs are also generated (''/var/log/smsd.log'').<br /> <br /> ==SMS using gnokii==<br /> <br /> [[Gnokii | See gnokii page]].<br /> <br /> ==Links==<br /> * [http://support.sagemcom.com/site/modele_fax.php?page=produit&amp;numero_type=22&amp;produit=877 HiLo 3G documentation at Sagem]<br /> * [http://www.libelium.com/tienda/catalog/images/arduino/AT_Commands.pdf HiLo AT Commands]<br /> * [http://www.developershome.com/sms/ SMS tutorial]<br /> * http://wiki.openmoko.org/wiki/Neo_1973_and_Neo_FreeRunner_gsm_modem<br /> * [http://www.anotherurl.com/library/at_test.htm AT Test commands]<br /> * http://www.gsm-modem.de/gsm-faq.html<br /> * [http://www.technologuepro.com/gsm/commande_at.htm Les commandes AT]<br /> * [http://smstools3.kekekasvi.com SMS Server Tools 3]<br /> <br /> [[Category:Wireless]]<br /> [[Category:Telephony]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=WPA_supplicant&diff=15133 WPA supplicant 2023-05-04T21:33:58Z <p>JulienB: /* Usage */</p> <hr /> <div>When dealing with &quot;strong&quot; encryption of Wi-Fi networks, you have to setup a WPA or WPA2 configuration.<br /> To handle the requirements of these protocols during association, a userspace daemon is needed: it is called a &quot;WPA supplicant&quot;.<br /> The most used one on Linux is ''wpa_supplicant''; we will see here how to install and configure it.<br /> <br /> {{Note|''wpa_supplicant'' is also able to handle WEP or unencrypted connections}}<br /> <br /> ==Installation==<br /> * Done by default if your board supports Wi-Fi connectivity. Otherwise:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;config&quot;&gt;<br /> Package Selection for the target ---&gt;<br /> Networking ---&gt;<br /> [*] wpa_supplicant<br /> [ ] Enable WPA with EAP<br /> [*] Install wpa_cli binary<br /> [*] Install wpa_passphrase binary<br /> &lt;/pre&gt;<br /> <br /> EAP is only needed if you plan to use WPA in Enterprise mode == with a Radius server.<br /> <br /> ==Usage==<br /> ''wpa_supplicant'' needs a configuration file in ''/etc/wpa_supplicant.conf''.<br /> For your convience a generic ''/etc/wpa_supplicant.conf'' is already installed in the Armadeus BSP (releases &gt; 5.2).<br /> Here is an example (WPA pre-shared key (TKIP)):<br /> &lt;pre class=&quot;host&quot;&gt;<br /> ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel<br /> update_config=1<br /> network={<br /> ssid=&quot;''SSID''&quot;<br /> scan_ssid=1 # only if ssid is hidden<br /> proto=WPA<br /> key_mgmt=WPA-PSK<br /> pairwise=TKIP<br /> psk=&quot;''PASSPHRASE''&quot;<br /> }<br /> &lt;/pre&gt;<br /> You can adapt ''/etc/wpa_supplicant.conf'' manually.<br /> * If your key needs to be encrypted, use the ''wpa_passphrase'' tool to add your network (SSID/PASSPHRASE) automatically:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # wpa_passphrase &quot;mynetworkSSID&quot; &quot;mynetworkPASSPHRASE&quot; &gt;&gt; /etc/wpa_supplicant.conf<br /> &lt;/pre&gt;<br /> * Be sure to have your Wi-Fi chipset driver loaded:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # modprobe libertas_sdio<br /> or<br /> # modprobe wlcore_sdio<br /> or<br /> # modprobe rt73usb<br /> # modprobe rt2800_usb<br /> # modprobe zd1211rw<br /> # modprobe rtl8187<br /> # modprobe r8712u<br /> ...<br /> &lt;/pre&gt;<br /> * Bring up the wireless interface:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # ip link set dev wlan0 up<br /> &lt;/pre&gt;<br /> or (as you prefer):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # ifconfig wlan0 up<br /> &lt;/pre&gt;<br /> * Then you can create the Wi-Fi connection with WPA Supplicant:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # wpa_supplicant -Dnl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B<br /> &lt;/pre&gt;<br /> * If you want a script executed each time Wi-Fi Association is done:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # wpa_cli -B -a /etc/wpa_supplicant/wpa_cli-action.sh<br /> # /etc/wpa_supplicant/wpa_cli-action.sh wlan0 CONNECTED # to force ip renewal if needed (first time)<br /> &lt;/pre&gt;<br /> * Then you can check your Wi-Fi interface is available:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # iwconfig wlan0<br /> wlan0 IEEE 802.11abgn ESSID:&quot;xxxx_xxxx&quot; <br /> Mode:Managed Frequency:5.2 GHz Access Point: 00:xx:xx:xx:xx:xx <br /> Bit Rate=24 Mb/s Tx-Power=20 dBm <br /> Retry long limit:7 RTS thr:off Fragment thr:off<br /> Encryption key:off<br /> Power Management:on<br /> Link Quality=29/70 Signal level=-81 dBm <br /> Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0<br /> Tx excessive retries:0 Invalid misc:0 Missed beacon:0<br /> <br /> # ifconfig wlan0<br /> wlan0 Link encap:Ethernet HWaddr 00:xx:xx:xx:xx:xx <br /> inet addr:192.168.0.20 Bcast:192.168.0.255 Mask:255.255.255.0<br /> inet6 addr: 2a01:e35:2e35:f60:219:88ff:fe15:4237/64 Scope:Global<br /> inet6 addr: fe80::219:88ff:fe15:4237/64 Scope:Link<br /> UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br /> RX packets:80 errors:0 dropped:0 overruns:0 frame:0<br /> TX packets:14 errors:0 dropped:0 overruns:0 carrier:0<br /> collisions:0 txqueuelen:1000 <br /> RX bytes:14238 (13.9 KiB) TX bytes:2797 (2.7 KiB)<br /> &lt;/pre&gt;<br /> <br /> ==Automate things at startup==<br /> ===Standard method===<br /> * In default BSP you have a ''/etc/init.d/S40Network'' script which will automatically starts all network interfaces configured in ''/etc/network/interfaces''.<br /> * All you have to do is to add your Wi-Fi interface configuration in ''/etc/network/interfaces'', like for example on [[OPOS6UL]]:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> auto wlan0<br /> iface wlan0 inet dhcp<br /> pre-up modprobe brcmfmac<br /> pre-up sleep 3<br /> pre-up wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant.conf -B<br /> &lt;/pre&gt;<br /> <br /> ===Other methods===<br /> * You can also choose to use a custom startup script. Here is an init script example, to adapt to your Wi-Fi driver (update WIFIDRIVERS in the source) and to place into ''/etc/init.d/S61wifi'' (do not forget to give it execution rigths with ''chmod a+x /etc/init.d/S61wifi''):<br /> &lt;source lang=&quot;bash&quot;&gt;<br /> #!/bin/sh<br /> #<br /> # Starts Wi-Fi services<br /> #<br /> # do not forget to update your wpa_supplicant configuration<br /> # wpa_passphrase &quot;mynetworrssid&quot; &quot;mynetworkpassphrase&quot; &gt;&gt; /etc/wpa_supplicant.conf<br /> # <br /> export WIFIDRIVERS=libertas_sdio<br /> case &quot;$1&quot; in<br /> start)<br /> echo &quot;Starting Wi-Fi&quot;<br /> modprobe $WIFIDRIVERS<br /> ip link set dev wlan0 up<br /> wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant.conf -B<br /> wpa_cli -B -a /etc/wpa_supplicant/wpa_cli-action.sh<br /> ;;<br /> <br /> stop)<br /> echo &quot;Stoping Wi-Fi&quot;<br /> wpa_cli -i wlan0 disconnect<br /> wpa_cli -i wlan0 terminate<br /> ip link set dev wlan0 down<br /> rmmod -a $WIFIDRIVERS<br /> ;;<br /> <br /> restart)<br /> $0 stop<br /> sleep 1<br /> $0 start<br /> ;;<br /> <br /> *)<br /> echo &quot;Usage: $0 {start|stop|restart}&quot;<br /> exit 1<br /> ;;<br /> esac<br /> <br /> exit 0<br /> <br /> &lt;/source&gt;<br /> <br /> ==Stop it==<br /> To stop WPA Supplicant daemon and switch off the connexion, you can use this command:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # wpa_cli terminate<br /> &lt;/pre&gt;<br /> or by using the S61wifi script here above:<br /> <br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /etc/init.d/S61wifi stop<br /> &lt;/pre&gt;<br /> <br /> ==Links==<br /> * [http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/README wpa_supplicant README]<br /> * [http://hostap.epitest.fi/wpa_supplicant/ wpa_supplicant Webpage]<br /> <br /> [[Category:Wireless]]<br /> [[Category:Security]]<br /> [[Category:WiFi]]<br /> [[Category:Network]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=APF6Dev&diff=15130 APF6Dev 2023-01-20T12:48:26Z <p>JulienB: /* Linux */</p> <hr /> <div>[[Category: APF6]]<br /> <br /> ==Description==<br /> This is the Armadeus System's standard development board/baseboard for the [[APF6]] module.<br /> <br /> The following options are available:<br /> * [[GPS]]<br /> * [[Gsm|GSM]]<br /> <br /> ==Errata==<br /> * As the board is also used for [[APF6_SP]] module (APF6+FPGA), you might experience some miscellaneous FPGA LED blinking (beside &quot;FPGA_SW&quot; button) when no FPGA is present.<br /> <br /> ==Resources==<br /> <br /> * [[Datasheet#APF6Dev | Datasheet and schematics]]<br /> * [http://www.armadeus.com/english/products-development_boards-apf6_dev.html Product page on Armadeus Systems website]<br /> <br /> ==Feature list==<br /> <br /> {| border=&quot;0&quot; cellpadding=&quot;5&quot; cellspacing=&quot;5&quot; summary=&quot;Hardware Add-Ons by functionnalities&quot;<br /> |----------------<br /> |- style=&quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&quot;<br /> |<br /> <br /> ===Audio===<br /> * [[SGTL5000]]: audio in/out<br /> * [[ALSA]]<br /> <br /> <br /> ===Video Out===<br /> * [[LCD]]<br /> * [[BackLight]]<br /> * [[FrameBuffer]]<br /> * HDMI<br /> <br /> ===Video In===<br /> *[[Camera interface]]<br /> ||<br /> ===User Input===<br /> * [[Tslib|Touchscreen]] (SX8654)<br /> <br /> ===Wired communication===<br /> * [[Uart|UART]]<br /> * [[SPI]]<br /> * [[I2C]]<br /> * [[USB Host]] <br /> * [[USB_OTG]]<br /> * [[USB_Gadget]]<br /> * [[CAN_bus_Linux_driver|CAN bus]]<br /> * [[PCIE]]<br /> <br /> ===Storage===<br /> * [[MultiMediaCard]]<br /> * [[SATA]]<br /> ||<br /> ===Realtime clock===<br /> * [[RTC]]<br /> <br /> ===Wireless communication===<br /> * [[Wifi|WiFi usage on Linux]]<br /> * [[Bluetooth|Bluetooth usage on Linux]]<br /> <br /> === FPGA connections ===<br /> <br /> * [[HSMC | HSMC connector]]<br /> * [[JTAG]]<br /> * [[Button]]<br /> * [[Led]]<br /> <br /> ===Other===<br /> * [[PWM]]: PWM3 output is on J2 pin 26 &lt;br&gt;(2.8V output), but also used by LCD backlight !<br /> * [[GPIOlib]]<br /> * [[JTAG]]<br /> <br /> |}<br /> <br /> ==Connectors==<br /> {| cellpadding=&quot;5&quot; cellspacing=&quot;0&quot;<br /> |-<br /> <br /> [[File:APF6Dev.jpeg| align=left]]<br /> <br /> ||<br /> <br /> {| border=&quot;1&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; summary=&quot;APF6Dev connectors&quot;<br /> |- style=&quot;background:#efefef;&quot; align=&quot;center&quot;<br /> ! Name !! Function<br /> |- align=&quot;center&quot;<br /> | J17 || Gigabit Ethernet<br /> |- align=&quot;center&quot;<br /> | J15 || HDMI<br /> |- align=&quot;center&quot;<br /> | J33 || Audio (Out/Up, In/Down)<br /> |- align=&quot;center&quot;<br /> | J29 || Power (12V)<br /> |- align=&quot;center&quot;<br /> | J36 || JTAG<br /> |- align=&quot;center&quot;<br /> | J5 || Extension 1<br /> |- align=&quot;center&quot;<br /> | J18 || Extension 2<br /> |}<br /> <br /> |}<br /> <br /> ==Tips==<br /> ===U-Boot===<br /> * To use 7&quot; 800x480 LCD with 3.10/3.14/4.1 legacy kernels:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; setenv extrabootargs video=mxcfb0:dev=lcd,800x480@60,if=RGB666,bpp=32<br /> &lt;/pre&gt;<br /> then, after having booted Linux, do:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> root@apf6 ~ # fbset &gt; /etc/fb.modes<br /> &lt;/pre&gt;<br /> <br /> * Activating HDMI console with USB keyboard in U-Boot (since armadeus-6.0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; usb start<br /> BIOS&gt; setenv stdout serial,vga<br /> BIOS&gt; setenv stderr serial,vga<br /> BIOS&gt; setenv stdin serial,usbkbd<br /> &lt;/pre&gt;<br /> keyboard map is english one and it seems not possible to change it (U-Boot 2014.07) ?<br /> <br /> * Use APF6Dev &quot;User&quot; LED in U-Boot scripts:<br /> If you have a recent U-Boot, supporting gpio command:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; gpio set 204<br /> ...<br /> BIOS&gt; gpio clear 204<br /> &lt;/pre&gt;<br /> Otherwise, you can do it 'the old way'; declare GPIO Port 7 Pin 12 (connected to the LED) as GPIO:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; md.l 0x020b4004 1<br /> 020b4004: 00000100<br /> BIOS&gt; mw.l 0x020b4004 0x00001100 (set bit 12)<br /> &lt;/pre&gt;<br /> Switch LED on:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; md.l 0x020b4000 1<br /> 020b4000: 00000f04<br /> BIOS&gt; mw.l 0x020b4000 0x00001f04 (set bit 12)<br /> &lt;/pre&gt;<br /> Switch LED off:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; mw.l 0x020b4000 0x00000f04 (clear bit 12)<br /> &lt;/pre&gt;<br /> <br /> * Use APF6Dev &quot;User&quot; Button (GPIO Port 1 Pin 9) in U-Boot scripts:<br /> If you have a recent U-Boot, supporting ''gpio'' command:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; setenv user_button 'gpio input 204'<br /> BIOS&gt; if run user_button; then echo &quot;Button pressed&quot;; fi<br /> gpio: pin 9 (gpio 9) value is 0 (if pressed)<br /> Button pressed<br /> &lt;/pre&gt;<br /> Otherwise, you can do it 'the old way':<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; setenv user_button 'setexpr.l toto *0x0209c000 \\&amp; 0x200; if itest ${toto} -eq 0; then true; else false; fi'<br /> BIOS&gt; if run user_button; then echo &quot;Button pressed&quot;; fi<br /> &lt;/pre&gt;<br /> <br /> * Detect USB OTG cable presence:<br /> <br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; setenv usb_cable 'setexpr.l toto *0x020c81c0 \\&amp; 0xf; if itest ${toto} -eq 0xe; then true; else false; fi'<br /> BIOS&gt; if run usb_cable; then echo &quot;USB detected&quot;; fi<br /> &lt;/pre&gt;<br /> <br /> ===Linux===<br /> * to activate login in Framebuffer console, please uncomment (or add) ''/etc/inittab'' line 35 this way:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # Set up a getty on LCD<br /> tty1::respawn:/sbin/getty 38400 tty1<br /> &lt;/pre&gt;<br /> <br /> [[Category:DevelopmentBoards]]<br /> [[Category:Hardware]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=APF6Dev&diff=15129 APF6Dev 2023-01-20T12:47:18Z <p>JulienB: /* Connectors */</p> <hr /> <div>[[Category: APF6]]<br /> <br /> ==Description==<br /> This is the Armadeus System's standard development board/baseboard for the [[APF6]] module.<br /> <br /> The following options are available:<br /> * [[GPS]]<br /> * [[Gsm|GSM]]<br /> <br /> ==Errata==<br /> * As the board is also used for [[APF6_SP]] module (APF6+FPGA), you might experience some miscellaneous FPGA LED blinking (beside &quot;FPGA_SW&quot; button) when no FPGA is present.<br /> <br /> ==Resources==<br /> <br /> * [[Datasheet#APF6Dev | Datasheet and schematics]]<br /> * [http://www.armadeus.com/english/products-development_boards-apf6_dev.html Product page on Armadeus Systems website]<br /> <br /> ==Feature list==<br /> <br /> {| border=&quot;0&quot; cellpadding=&quot;5&quot; cellspacing=&quot;5&quot; summary=&quot;Hardware Add-Ons by functionnalities&quot;<br /> |----------------<br /> |- style=&quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&quot;<br /> |<br /> <br /> ===Audio===<br /> * [[SGTL5000]]: audio in/out<br /> * [[ALSA]]<br /> <br /> <br /> ===Video Out===<br /> * [[LCD]]<br /> * [[BackLight]]<br /> * [[FrameBuffer]]<br /> * HDMI<br /> <br /> ===Video In===<br /> *[[Camera interface]]<br /> ||<br /> ===User Input===<br /> * [[Tslib|Touchscreen]] (SX8654)<br /> <br /> ===Wired communication===<br /> * [[Uart|UART]]<br /> * [[SPI]]<br /> * [[I2C]]<br /> * [[USB Host]] <br /> * [[USB_OTG]]<br /> * [[USB_Gadget]]<br /> * [[CAN_bus_Linux_driver|CAN bus]]<br /> * [[PCIE]]<br /> <br /> ===Storage===<br /> * [[MultiMediaCard]]<br /> * [[SATA]]<br /> ||<br /> ===Realtime clock===<br /> * [[RTC]]<br /> <br /> ===Wireless communication===<br /> * [[Wifi|WiFi usage on Linux]]<br /> * [[Bluetooth|Bluetooth usage on Linux]]<br /> <br /> === FPGA connections ===<br /> <br /> * [[HSMC | HSMC connector]]<br /> * [[JTAG]]<br /> * [[Button]]<br /> * [[Led]]<br /> <br /> ===Other===<br /> * [[PWM]]: PWM3 output is on J2 pin 26 &lt;br&gt;(2.8V output), but also used by LCD backlight !<br /> * [[GPIOlib]]<br /> * [[JTAG]]<br /> <br /> |}<br /> <br /> ==Connectors==<br /> {| cellpadding=&quot;5&quot; cellspacing=&quot;0&quot;<br /> |-<br /> <br /> [[File:APF6Dev.jpeg| align=left]]<br /> <br /> ||<br /> <br /> {| border=&quot;1&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; summary=&quot;APF6Dev connectors&quot;<br /> |- style=&quot;background:#efefef;&quot; align=&quot;center&quot;<br /> ! Name !! Function<br /> |- align=&quot;center&quot;<br /> | J17 || Gigabit Ethernet<br /> |- align=&quot;center&quot;<br /> | J15 || HDMI<br /> |- align=&quot;center&quot;<br /> | J33 || Audio (Out/Up, In/Down)<br /> |- align=&quot;center&quot;<br /> | J29 || Power (12V)<br /> |- align=&quot;center&quot;<br /> | J36 || JTAG<br /> |- align=&quot;center&quot;<br /> | J5 || Extension 1<br /> |- align=&quot;center&quot;<br /> | J18 || Extension 2<br /> |}<br /> <br /> |}<br /> <br /> ==Tips==<br /> ===U-Boot===<br /> * To use 7&quot; 800x480 LCD with 3.10/3.14/4.1 legacy kernels:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; setenv extrabootargs video=mxcfb0:dev=lcd,800x480@60,if=RGB666,bpp=32<br /> &lt;/pre&gt;<br /> then, after having booted Linux, do:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> root@apf6 ~ # fbset &gt; /etc/fb.modes<br /> &lt;/pre&gt;<br /> <br /> * Activating HDMI console with USB keyboard in U-Boot (since armadeus-6.0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; usb start<br /> BIOS&gt; setenv stdout serial,vga<br /> BIOS&gt; setenv stderr serial,vga<br /> BIOS&gt; setenv stdin serial,usbkbd<br /> &lt;/pre&gt;<br /> keyboard map is english one and it seems not possible to change it (U-Boot 2014.07) ?<br /> <br /> * Use APF6Dev &quot;User&quot; LED in U-Boot scripts:<br /> If you have a recent U-Boot, supporting gpio command:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; gpio set 204<br /> ...<br /> BIOS&gt; gpio clear 204<br /> &lt;/pre&gt;<br /> Otherwise, you can do it 'the old way'; declare GPIO Port 7 Pin 12 (connected to the LED) as GPIO:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; md.l 0x020b4004 1<br /> 020b4004: 00000100<br /> BIOS&gt; mw.l 0x020b4004 0x00001100 (set bit 12)<br /> &lt;/pre&gt;<br /> Switch LED on:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; md.l 0x020b4000 1<br /> 020b4000: 00000f04<br /> BIOS&gt; mw.l 0x020b4000 0x00001f04 (set bit 12)<br /> &lt;/pre&gt;<br /> Switch LED off:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; mw.l 0x020b4000 0x00000f04 (clear bit 12)<br /> &lt;/pre&gt;<br /> <br /> * Use APF6Dev &quot;User&quot; Button (GPIO Port 1 Pin 9) in U-Boot scripts:<br /> If you have a recent U-Boot, supporting ''gpio'' command:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; setenv user_button 'gpio input 204'<br /> BIOS&gt; if run user_button; then echo &quot;Button pressed&quot;; fi<br /> gpio: pin 9 (gpio 9) value is 0 (if pressed)<br /> Button pressed<br /> &lt;/pre&gt;<br /> Otherwise, you can do it 'the old way':<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; setenv user_button 'setexpr.l toto *0x0209c000 \\&amp; 0x200; if itest ${toto} -eq 0; then true; else false; fi'<br /> BIOS&gt; if run user_button; then echo &quot;Button pressed&quot;; fi<br /> &lt;/pre&gt;<br /> <br /> * Detect USB OTG cable presence:<br /> <br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; setenv usb_cable 'setexpr.l toto *0x020c81c0 \\&amp; 0xf; if itest ${toto} -eq 0xe; then true; else false; fi'<br /> BIOS&gt; if run usb_cable; then echo &quot;USB detected&quot;; fi<br /> &lt;/pre&gt;<br /> <br /> ===Linux===<br /> * to activate login in Framebuffer console, please uncomment ''/etc/inittab'' line 35 this way:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # Set up a getty on LCD<br /> tty1::respawn:/sbin/getty 38400 tty1<br /> &lt;/pre&gt;<br /> <br /> [[Category:DevelopmentBoards]]<br /> [[Category:Hardware]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=X11_server&diff=15128 X11 server 2023-01-20T09:40:43Z <p>JulienB: /* Launching */</p> <hr /> <div>==Introduction==<br /> Even if using an Xserver in an embedded context is most of the times not a necessity, it could be interesting in some &quot;PDA like&quot; applications, where existing applications reuse is needed.<br /> Even if recent embedded systems are capable of running a full Xorg server, in low RAM embedded systems we prefer to use the reduced version TinyX/Xfbdev, which is an upper layer of the Linux [[Framebuffer]].<br /> <br /> ==Installing==<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> <br /> {| border=&quot;1&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot; summary=&quot;&quot; class=&quot;wikitable&quot;<br /> |- style=&quot;background:#efefef;&quot; align=&quot;center&quot;<br /> ! Low RAM !! &gt; 256 Mbytes RAM<br /> |-<br /> |&lt;pre class=&quot;config&quot;&gt;<br /> Target packages ---&gt;<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> [*] X.org X Window System ---&gt;<br /> X11R7 Servers ---&gt;<br /> [*] xorg-server<br /> X Window System server type (KDrive / TinyX) ---&gt;<br /> [ ] Null root cursor<br /> [ ] Enable AIGLX Extension<br /> [*] Enable KDrive/TinyX evdev input driver<br /> [*] Enable KDrive/TinyX kbd input driver<br /> [*] Enable KDrive/TinyX mouse input driver<br /> *** Optional Servers ***<br /> [ ] Xvfb server<br /> &lt;/pre&gt;<br /> ||<br /> &lt;pre class=&quot;config&quot;&gt;<br /> Target packages ---&gt;<br /> ...<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> [*] X.org X Window System ---&gt;<br /> X11R7 Servers ---&gt;<br /> X Window System server type (Modular X.org) ---&gt;<br /> ...<br /> X11R7 Drivers ---&gt;<br /> [*] xf86-input-evdev<br /> [*] xf86-input-keyboard<br /> [*] xf86-input-mouse<br /> [*] xf86-input-tslib<br /> [*] xf86-input-fbdev<br /> &lt;/pre&gt;<br /> <br /> |}<br /> * Add some applications ;-)<br /> &lt;pre class=&quot;config&quot;&gt;<br /> ...<br /> X11R7 Applications ---&gt;<br /> ...<br /> [*] xclock<br /> ...<br /> [*] xeyes<br /> ...<br /> [*] xterm<br /> &lt;/pre&gt;<br /> <br /> ==Launching==<br /> {| border=&quot;1&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot; summary=&quot;&quot; class=&quot;wikitable&quot;<br /> |- style=&quot;background:#efefef;&quot; align=&quot;center&quot;<br /> ! Low RAM !! High RAM<br /> |-<br /> |* For example, with a mouse and a keyboard (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -mouse evdev -retro -keybd evdev,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> * Or with a touchscreen (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -retro -mouse tslib,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> |<br /> * if not automatically started up at boot:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/Xorg :0.0 vt01 -s 0 -noreset -retro<br /> &lt;/pre&gt;<br /> |}<br /> <br /> then you will need to launch a window manager (like [[Matchbox]]/[[Blackbox]]/[[Fluxbox]]/Openbox) and some applications....<br /> <br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # xterm &amp;<br /> # xeyes &amp;<br /> &lt;/pre&gt;<br /> <br /> [[Image:xeyes.png|X server with xeyes app on APF27]]<br /> <br /> [[Category:X11]] [[Category:Graphical User Interface]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=X11_server&diff=15127 X11 server 2023-01-20T09:40:25Z <p>JulienB: /* Installing */</p> <hr /> <div>==Introduction==<br /> Even if using an Xserver in an embedded context is most of the times not a necessity, it could be interesting in some &quot;PDA like&quot; applications, where existing applications reuse is needed.<br /> Even if recent embedded systems are capable of running a full Xorg server, in low RAM embedded systems we prefer to use the reduced version TinyX/Xfbdev, which is an upper layer of the Linux [[Framebuffer]].<br /> <br /> ==Installing==<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> <br /> {| border=&quot;1&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot; summary=&quot;&quot; class=&quot;wikitable&quot;<br /> |- style=&quot;background:#efefef;&quot; align=&quot;center&quot;<br /> ! Low RAM !! &gt; 256 Mbytes RAM<br /> |-<br /> |&lt;pre class=&quot;config&quot;&gt;<br /> Target packages ---&gt;<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> [*] X.org X Window System ---&gt;<br /> X11R7 Servers ---&gt;<br /> [*] xorg-server<br /> X Window System server type (KDrive / TinyX) ---&gt;<br /> [ ] Null root cursor<br /> [ ] Enable AIGLX Extension<br /> [*] Enable KDrive/TinyX evdev input driver<br /> [*] Enable KDrive/TinyX kbd input driver<br /> [*] Enable KDrive/TinyX mouse input driver<br /> *** Optional Servers ***<br /> [ ] Xvfb server<br /> &lt;/pre&gt;<br /> ||<br /> &lt;pre class=&quot;config&quot;&gt;<br /> Target packages ---&gt;<br /> ...<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> [*] X.org X Window System ---&gt;<br /> X11R7 Servers ---&gt;<br /> X Window System server type (Modular X.org) ---&gt;<br /> ...<br /> X11R7 Drivers ---&gt;<br /> [*] xf86-input-evdev<br /> [*] xf86-input-keyboard<br /> [*] xf86-input-mouse<br /> [*] xf86-input-tslib<br /> [*] xf86-input-fbdev<br /> &lt;/pre&gt;<br /> <br /> |}<br /> * Add some applications ;-)<br /> &lt;pre class=&quot;config&quot;&gt;<br /> ...<br /> X11R7 Applications ---&gt;<br /> ...<br /> [*] xclock<br /> ...<br /> [*] xeyes<br /> ...<br /> [*] xterm<br /> &lt;/pre&gt;<br /> <br /> ==Launching==<br /> {|<br /> |-<br /> ! Low RAM !! High RAM<br /> |-<br /> |* For example, with a mouse and a keyboard (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -mouse evdev -retro -keybd evdev,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> * Or with a touchscreen (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -retro -mouse tslib,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> |<br /> * if not automatically started up at boot:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/Xorg :0.0 vt01 -s 0 -noreset -retro<br /> &lt;/pre&gt;<br /> |}<br /> <br /> then you will need to launch a window manager (like [[Matchbox]]/[[Blackbox]]/[[Fluxbox]]/Openbox) and some applications....<br /> <br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # xterm &amp;<br /> # xeyes &amp;<br /> &lt;/pre&gt;<br /> <br /> [[Image:xeyes.png|X server with xeyes app on APF27]]<br /> <br /> [[Category:X11]] [[Category:Graphical User Interface]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=X11_server&diff=15126 X11 server 2023-01-20T09:39:18Z <p>JulienB: /* Launching */</p> <hr /> <div>==Introduction==<br /> Even if using an Xserver in an embedded context is most of the times not a necessity, it could be interesting in some &quot;PDA like&quot; applications, where existing applications reuse is needed.<br /> Even if recent embedded systems are capable of running a full Xorg server, in low RAM embedded systems we prefer to use the reduced version TinyX/Xfbdev, which is an upper layer of the Linux [[Framebuffer]].<br /> <br /> ==Installing==<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> <br /> {|<br /> |-<br /> ! Low RAM !! &gt; 256 Mbytes RAM<br /> |-<br /> |&lt;pre class=&quot;config&quot;&gt;<br /> Target packages ---&gt;<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> [*] X.org X Window System ---&gt;<br /> X11R7 Servers ---&gt;<br /> [*] xorg-server<br /> X Window System server type (KDrive / TinyX) ---&gt;<br /> [ ] Null root cursor<br /> [ ] Enable AIGLX Extension<br /> [*] Enable KDrive/TinyX evdev input driver<br /> [*] Enable KDrive/TinyX kbd input driver<br /> [*] Enable KDrive/TinyX mouse input driver<br /> *** Optional Servers ***<br /> [ ] Xvfb server<br /> &lt;/pre&gt;<br /> ||<br /> &lt;pre class=&quot;config&quot;&gt;<br /> Target packages ---&gt;<br /> ...<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> [*] X.org X Window System ---&gt;<br /> X11R7 Servers ---&gt;<br /> X Window System server type (Modular X.org) ---&gt;<br /> ...<br /> X11R7 Drivers ---&gt;<br /> [*] xf86-input-evdev<br /> [*] xf86-input-keyboard<br /> [*] xf86-input-mouse<br /> [*] xf86-input-tslib<br /> [*] xf86-input-fbdev<br /> &lt;/pre&gt;<br /> <br /> |}<br /> * Add some applications ;-)<br /> &lt;pre class=&quot;config&quot;&gt;<br /> ...<br /> X11R7 Applications ---&gt;<br /> ...<br /> [*] xclock<br /> ...<br /> [*] xeyes<br /> ...<br /> [*] xterm<br /> &lt;/pre&gt;<br /> <br /> ==Launching==<br /> {|<br /> |-<br /> ! Low RAM !! High RAM<br /> |-<br /> |* For example, with a mouse and a keyboard (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -mouse evdev -retro -keybd evdev,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> * Or with a touchscreen (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -retro -mouse tslib,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> |<br /> * if not automatically started up at boot:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/Xorg :0.0 vt01 -s 0 -noreset -retro<br /> &lt;/pre&gt;<br /> |}<br /> <br /> then you will need to launch a window manager (like [[Matchbox]]/[[Blackbox]]/[[Fluxbox]]/Openbox) and some applications....<br /> <br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # xterm &amp;<br /> # xeyes &amp;<br /> &lt;/pre&gt;<br /> <br /> [[Image:xeyes.png|X server with xeyes app on APF27]]<br /> <br /> [[Category:X11]] [[Category:Graphical User Interface]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=X11_server&diff=15125 X11 server 2023-01-20T09:32:19Z <p>JulienB: /* Installing */</p> <hr /> <div>==Introduction==<br /> Even if using an Xserver in an embedded context is most of the times not a necessity, it could be interesting in some &quot;PDA like&quot; applications, where existing applications reuse is needed.<br /> Even if recent embedded systems are capable of running a full Xorg server, in low RAM embedded systems we prefer to use the reduced version TinyX/Xfbdev, which is an upper layer of the Linux [[Framebuffer]].<br /> <br /> ==Installing==<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> <br /> {|<br /> |-<br /> ! Low RAM !! &gt; 256 Mbytes RAM<br /> |-<br /> |&lt;pre class=&quot;config&quot;&gt;<br /> Target packages ---&gt;<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> [*] X.org X Window System ---&gt;<br /> X11R7 Servers ---&gt;<br /> [*] xorg-server<br /> X Window System server type (KDrive / TinyX) ---&gt;<br /> [ ] Null root cursor<br /> [ ] Enable AIGLX Extension<br /> [*] Enable KDrive/TinyX evdev input driver<br /> [*] Enable KDrive/TinyX kbd input driver<br /> [*] Enable KDrive/TinyX mouse input driver<br /> *** Optional Servers ***<br /> [ ] Xvfb server<br /> &lt;/pre&gt;<br /> ||<br /> &lt;pre class=&quot;config&quot;&gt;<br /> Target packages ---&gt;<br /> ...<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> [*] X.org X Window System ---&gt;<br /> X11R7 Servers ---&gt;<br /> X Window System server type (Modular X.org) ---&gt;<br /> ...<br /> X11R7 Drivers ---&gt;<br /> [*] xf86-input-evdev<br /> [*] xf86-input-keyboard<br /> [*] xf86-input-mouse<br /> [*] xf86-input-tslib<br /> [*] xf86-input-fbdev<br /> &lt;/pre&gt;<br /> <br /> |}<br /> * Add some applications ;-)<br /> &lt;pre class=&quot;config&quot;&gt;<br /> ...<br /> X11R7 Applications ---&gt;<br /> ...<br /> [*] xclock<br /> ...<br /> [*] xeyes<br /> ...<br /> [*] xterm<br /> &lt;/pre&gt;<br /> <br /> ==Launching==<br /> * For example, with a mouse and a keyboard (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -mouse evdev -retro -keybd evdev,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> * Or with a touchscreen (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -retro -mouse tslib,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> <br /> then you will need to launch a window manager (like [[Matchbox]]/[[Blackbox]]/[[Fluxbox]]/Openbox) and some applications....<br /> <br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # xterm &amp;<br /> # xeyes &amp;<br /> &lt;/pre&gt;<br /> <br /> [[Image:xeyes.png|X server with xeyes app on APF27]]<br /> <br /> [[Category:X11]] [[Category:Graphical User Interface]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=X11_server&diff=15124 X11 server 2023-01-20T09:27:50Z <p>JulienB: /* Installing */</p> <hr /> <div>==Introduction==<br /> Even if using an Xserver in an embedded context is most of the times not a necessity, it could be interesting in some &quot;PDA like&quot; applications, where existing applications reuse is needed.<br /> Even if recent embedded systems are capable of running a full Xorg server, in low RAM embedded systems we prefer to use the reduced version TinyX/Xfbdev, which is an upper layer of the Linux [[Framebuffer]].<br /> <br /> ==Installing==<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> <br /> {|<br /> |-<br /> ! Low RAM !! &gt; 256 Mbytes RAM<br /> |-<br /> |&lt;pre class=&quot;config&quot;&gt;<br /> Target packages ---&gt;<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> [*] X.org X Window System ---&gt;<br /> X11R7 Servers ---&gt;<br /> [*] xorg-server<br /> X Window System server type (KDrive / TinyX) ---&gt;<br /> [ ] Null root cursor<br /> [ ] Enable AIGLX Extension<br /> [*] Enable KDrive/TinyX evdev input driver<br /> [*] Enable KDrive/TinyX kbd input driver<br /> [*] Enable KDrive/TinyX mouse input driver<br /> *** Optional Servers ***<br /> [ ] Xvfb server<br /> &lt;/pre&gt;<br /> ||<br /> &lt;pre class=&quot;config&quot;&gt;<br /> Target packages ---&gt;<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> [*] X.org X Window System ---&gt;<br /> X Window System server type (Modular X.org) ---&gt;<br /> &lt;/pre&gt;<br /> <br /> |}<br /> * Add some applications ;-)<br /> &lt;pre class=&quot;config&quot;&gt;<br /> ...<br /> X11R7 Applications ---&gt;<br /> ...<br /> [*] xclock<br /> ...<br /> [*] xeyes<br /> ...<br /> [*] xterm<br /> &lt;/pre&gt;<br /> <br /> ==Launching==<br /> * For example, with a mouse and a keyboard (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -mouse evdev -retro -keybd evdev,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> * Or with a touchscreen (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -retro -mouse tslib,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> <br /> then you will need to launch a window manager (like [[Matchbox]]/[[Blackbox]]/[[Fluxbox]]/Openbox) and some applications....<br /> <br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # xterm &amp;<br /> # xeyes &amp;<br /> &lt;/pre&gt;<br /> <br /> [[Image:xeyes.png|X server with xeyes app on APF27]]<br /> <br /> [[Category:X11]] [[Category:Graphical User Interface]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=X11_server&diff=15123 X11 server 2023-01-20T09:23:59Z <p>JulienB: /* Installing */</p> <hr /> <div>==Introduction==<br /> Even if using an Xserver in an embedded context is most of the times not a necessity, it could be interesting in some &quot;PDA like&quot; applications, where existing applications reuse is needed.<br /> Even if recent embedded systems are capable of running a full Xorg server, in low RAM embedded systems we prefer to use the reduced version TinyX/Xfbdev, which is an upper layer of the Linux [[Framebuffer]].<br /> <br /> ==Installing==<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;config&quot;&gt;<br /> Target packages ---&gt;<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> [*] X.org X Window System ---&gt;<br /> X11R7 Servers ---&gt;<br /> [*] xorg-server<br /> X Window System server type (KDrive / TinyX) ---&gt;<br /> [ ] Null root cursor<br /> [ ] Enable AIGLX Extension<br /> [*] Enable KDrive/TinyX evdev input driver<br /> [*] Enable KDrive/TinyX kbd input driver<br /> [*] Enable KDrive/TinyX mouse input driver<br /> *** Optional Servers ***<br /> [ ] Xvfb server<br /> &lt;/pre&gt;<br /> * Add some applications ;-)<br /> &lt;pre class=&quot;config&quot;&gt;<br /> ...<br /> X11R7 Applications ---&gt;<br /> ...<br /> [*] xclock<br /> ...<br /> [*] xeyes<br /> ...<br /> [*] xterm<br /> &lt;/pre&gt;<br /> <br /> ==Launching==<br /> * For example, with a mouse and a keyboard (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -mouse evdev -retro -keybd evdev,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> * Or with a touchscreen (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -retro -mouse tslib,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> <br /> then you will need to launch a window manager (like [[Matchbox]]/[[Blackbox]]/[[Fluxbox]]/Openbox) and some applications....<br /> <br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # xterm &amp;<br /> # xeyes &amp;<br /> &lt;/pre&gt;<br /> <br /> [[Image:xeyes.png|X server with xeyes app on APF27]]<br /> <br /> [[Category:X11]] [[Category:Graphical User Interface]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=X11_server&diff=15122 X11 server 2023-01-20T09:23:01Z <p>JulienB: /* Introduction */</p> <hr /> <div>==Introduction==<br /> Even if using an Xserver in an embedded context is most of the times not a necessity, it could be interesting in some &quot;PDA like&quot; applications, where existing applications reuse is needed.<br /> Even if recent embedded systems are capable of running a full Xorg server, in low RAM embedded systems we prefer to use the reduced version TinyX/Xfbdev, which is an upper layer of the Linux [[Framebuffer]].<br /> <br /> ==Installing==<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;config&quot;&gt;<br /> Target packages ---&gt;<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> [*] X.org X Window System ---&gt;<br /> X11R7 Servers ---&gt;<br /> [*] xorg-server<br /> X Window System server type (KDrive / TinyX) ---&gt;<br /> [ ] Null root cursor<br /> [ ] Enable AIGLX Extension<br /> [*] Enable KDrive/TinyX evdev input driver<br /> [*] Enable KDrive/TinyX kbd input driver<br /> [*] Enable KDrive/TinyX mouse input driver<br /> *** Optional Servers ***<br /> [ ] Xvfb server<br /> ...<br /> X11R7 Applications ---&gt;<br /> ...<br /> [*] xclock<br /> ...<br /> [*] xeyes<br /> ...<br /> [*] xterm<br /> &lt;/pre&gt;<br /> <br /> ==Launching==<br /> * For example, with a mouse and a keyboard (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -mouse evdev -retro -keybd evdev,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> * Or with a touchscreen (event0):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /usr/bin/X -retro -mouse tslib,,device=/dev/input/event0 &amp;<br /> &lt;/pre&gt;<br /> <br /> then you will need to launch a window manager (like [[Matchbox]]/[[Blackbox]]/[[Fluxbox]]/Openbox) and some applications....<br /> <br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # xterm &amp;<br /> # xeyes &amp;<br /> &lt;/pre&gt;<br /> <br /> [[Image:xeyes.png|X server with xeyes app on APF27]]<br /> <br /> [[Category:X11]] [[Category:Graphical User Interface]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=Wayland&diff=15121 Wayland 2023-01-18T17:45:48Z <p>JulienB: /* Launching */</p> <hr /> <div>==Intro==<br /> <br /> Wayland is the new protocol dedicated to replace X11 windowing system. It's first Linux implementation is called ''weston''. It uses KMS/DRM video drivers direct access, and so needs a recent kernel (4.4+). It currently works well on [[APF6]].<br /> <br /> ==Installation==<br /> <br /> Use corresponding config (''apf6_wayland_defconfig)'', or activate it in menuconfig:<br /> <br /> &lt;pre class=&quot;config&gt;<br /> ...<br /> Target packages ---&gt;<br /> ...<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> ...<br /> [*] weston │ │ <br /> │ │ default compositor (drm) ---&gt; │ │ <br /> │ │ -*- DRM compositor │ │ <br /> │ │ [ ] RDP compositor │ │ <br /> │ │ [ ] headless (testing) compositor │ │ <br /> │ │ [ ] Wayland (nested) compositor │ │ <br /> │ │ [ ] X11 (nested) compositor │ │ <br /> │ │ [ ] XWayland support │ │ <br /> │ │ [*] desktop shell │ │ <br /> │ │ [*] fullscreen shell │ │ <br /> │ │ [*] ivi shell │ │ <br /> │ │ [*] kiosk shell │ │ <br /> │ │ [*] demo clients │ │<br /> &lt;/pre&gt;<br /> <br /> == Launching ==<br /> * Needs to be done from a graphical/framebuffer console. [[Framebuffer#Login.2FConsole|To activate one]].<br /> * Login to graphical console / tty1<br /> * Do some config the first boot:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir /tmp/runtime<br /> # chmod 0700 /tmp/runtime<br /> # export XDG_RUNTIME_DIR=/tmp/runtime<br /> &lt;/pre&gt;<br /> * Start weston<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # weston -B drm-backend.so<br /> &lt;/pre&gt;<br /> <br /> ==Tips==<br /> * For OpenGL/ES demos, it is necessary to increase Linux kernel allocable video memory at boot:<br /> &lt;pre class=&quot;APF&quot;&gt;<br /> BIOS&gt; setenv extrabootargs '${extrabootargs} cma=256M'<br /> &lt;/pre&gt;<br /> <br /> [[Category:Graphical User Interface]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=Wayland&diff=15120 Wayland 2023-01-18T17:45:13Z <p>JulienB: /* Launching */</p> <hr /> <div>==Intro==<br /> <br /> Wayland is the new protocol dedicated to replace X11 windowing system. It's first Linux implementation is called ''weston''. It uses KMS/DRM video drivers direct access, and so needs a recent kernel (4.4+). It currently works well on [[APF6]].<br /> <br /> ==Installation==<br /> <br /> Use corresponding config (''apf6_wayland_defconfig)'', or activate it in menuconfig:<br /> <br /> &lt;pre class=&quot;config&gt;<br /> ...<br /> Target packages ---&gt;<br /> ...<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> ...<br /> [*] weston │ │ <br /> │ │ default compositor (drm) ---&gt; │ │ <br /> │ │ -*- DRM compositor │ │ <br /> │ │ [ ] RDP compositor │ │ <br /> │ │ [ ] headless (testing) compositor │ │ <br /> │ │ [ ] Wayland (nested) compositor │ │ <br /> │ │ [ ] X11 (nested) compositor │ │ <br /> │ │ [ ] XWayland support │ │ <br /> │ │ [*] desktop shell │ │ <br /> │ │ [*] fullscreen shell │ │ <br /> │ │ [*] ivi shell │ │ <br /> │ │ [*] kiosk shell │ │ <br /> │ │ [*] demo clients │ │<br /> &lt;/pre&gt;<br /> <br /> == Launching ==<br /> * Needs to be done from a graphical/framebuffer console. To activate one: [[Framebuffer#Login.2FConsole]].<br /> * Login to graphical console / tty1<br /> * Do some config the first boot:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir /tmp/runtime<br /> # chmod 0700 /tmp/runtime<br /> # export XDG_RUNTIME_DIR=/tmp/runtime<br /> &lt;/pre&gt;<br /> * Start weston<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # weston -B drm-backend.so<br /> &lt;/pre&gt;<br /> <br /> ==Tips==<br /> * For OpenGL/ES demos, it is necessary to increase Linux kernel allocable video memory at boot:<br /> &lt;pre class=&quot;APF&quot;&gt;<br /> BIOS&gt; setenv extrabootargs '${extrabootargs} cma=256M'<br /> &lt;/pre&gt;<br /> <br /> [[Category:Graphical User Interface]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=Wayland&diff=15119 Wayland 2023-01-18T17:40:40Z <p>JulienB: /* Installation */</p> <hr /> <div>==Intro==<br /> <br /> Wayland is the new protocol dedicated to replace X11 windowing system. It's first Linux implementation is called ''weston''. It uses KMS/DRM video drivers direct access, and so needs a recent kernel (4.4+). It currently works well on [[APF6]].<br /> <br /> ==Installation==<br /> <br /> Use corresponding config (''apf6_wayland_defconfig)'', or activate it in menuconfig:<br /> <br /> &lt;pre class=&quot;config&gt;<br /> ...<br /> Target packages ---&gt;<br /> ...<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> ...<br /> [*] weston │ │ <br /> │ │ default compositor (drm) ---&gt; │ │ <br /> │ │ -*- DRM compositor │ │ <br /> │ │ [ ] RDP compositor │ │ <br /> │ │ [ ] headless (testing) compositor │ │ <br /> │ │ [ ] Wayland (nested) compositor │ │ <br /> │ │ [ ] X11 (nested) compositor │ │ <br /> │ │ [ ] XWayland support │ │ <br /> │ │ [*] desktop shell │ │ <br /> │ │ [*] fullscreen shell │ │ <br /> │ │ [*] ivi shell │ │ <br /> │ │ [*] kiosk shell │ │ <br /> │ │ [*] demo clients │ │<br /> &lt;/pre&gt;<br /> <br /> == Launching ==<br /> * Needs to be done from a graphical/framebuffer console. To activate one: [[Framebuffer]].<br /> * Login to graphical console / tty1<br /> * Do some config the first boot:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir /tmp/runtime<br /> # chmod 0700 /tmp/runtime<br /> # export XDG_RUNTIME_DIR=/tmp/runtime<br /> &lt;/pre&gt;<br /> * Start weston<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # weston -B drm-backend.so<br /> &lt;/pre&gt;<br /> <br /> ==Tips==<br /> * For OpenGL/ES demos, it is necessary to increase Linux kernel allocable video memory at boot:<br /> &lt;pre class=&quot;APF&quot;&gt;<br /> BIOS&gt; setenv extrabootargs '${extrabootargs} cma=256M'<br /> &lt;/pre&gt;<br /> <br /> [[Category:Graphical User Interface]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=Wayland&diff=15118 Wayland 2023-01-18T17:37:21Z <p>JulienB: /* Installation */</p> <hr /> <div>==Intro==<br /> <br /> Wayland is the new protocol dedicated to replace X11 windowing system. It's first Linux implementation is called ''weston''. It uses KMS/DRM video drivers direct access, and so needs a recent kernel (4.4+). It currently works well on [[APF6]].<br /> <br /> ==Installation==<br /> <br /> Use corresponding config (''apf6_wayland_defconfig)'', or activate it in menuconfig:<br /> <br /> &lt;pre class=&quot;config&gt;<br /> ...<br /> Target packages ---&gt;<br /> ...<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> ...<br /> [*] weston │ │ <br /> │ │ default compositor (drm) ---&gt; │ │ <br /> │ │ -*- DRM compositor │ │ <br /> │ │ [ ] RDP compositor │ │ <br /> │ │ [ ] headless (testing) compositor │ │ <br /> │ │ [ ] Wayland (nested) compositor │ │ <br /> │ │ [ ] X11 (nested) compositor │ │ <br /> │ │ [ ] XWayland support │ │ <br /> │ │ [*] desktop shell │ │ <br /> │ │ [*] fullscreen shell │ │ <br /> │ │ [*] ivi shell │ │ <br /> │ │ [*] kiosk shell │ │ <br /> │ │ [*] demo clients │ │<br /> &lt;/pre&gt;<br /> <br /> ==Tips==<br /> * For OpenGL/ES demos, it is necessary to increase Linux kernel allocable video memory at boot:<br /> &lt;pre class=&quot;APF&quot;&gt;<br /> BIOS&gt; setenv extrabootargs '${extrabootargs} cma=256M'<br /> &lt;/pre&gt;<br /> <br /> [[Category:Graphical User Interface]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=Wayland&diff=15117 Wayland 2023-01-18T17:37:02Z <p>JulienB: </p> <hr /> <div>==Intro==<br /> <br /> Wayland is the new protocol dedicated to replace X11 windowing system. It's first Linux implementation is called ''weston''. It uses KMS/DRM video drivers direct access, and so needs a recent kernel (4.4+). It currently works well on [[APF6]].<br /> <br /> ==Installation==<br /> <br /> Use corresponding config (apf6_wayland_defconfig), or activate it in menuconfig:<br /> <br /> &lt;pre class=&quot;config&gt;<br /> ...<br /> Target packages ---&gt;<br /> ...<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> ...<br /> [*] weston │ │ <br /> │ │ default compositor (drm) ---&gt; │ │ <br /> │ │ -*- DRM compositor │ │ <br /> │ │ [ ] RDP compositor │ │ <br /> │ │ [ ] headless (testing) compositor │ │ <br /> │ │ [ ] Wayland (nested) compositor │ │ <br /> │ │ [ ] X11 (nested) compositor │ │ <br /> │ │ [ ] XWayland support │ │ <br /> │ │ [*] desktop shell │ │ <br /> │ │ [*] fullscreen shell │ │ <br /> │ │ [*] ivi shell │ │ <br /> │ │ [*] kiosk shell │ │ <br /> │ │ [*] demo clients │ │<br /> &lt;/pre&gt;<br /> <br /> ==Tips==<br /> * For OpenGL/ES demos, it is necessary to increase Linux kernel allocable video memory at boot:<br /> &lt;pre class=&quot;APF&quot;&gt;<br /> BIOS&gt; setenv extrabootargs '${extrabootargs} cma=256M'<br /> &lt;/pre&gt;<br /> <br /> [[Category:Graphical User Interface]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=Wayland&diff=15116 Wayland 2023-01-18T17:27:55Z <p>JulienB: Created page with &quot;==Tips== * For OpenGL/ES demos, it is necessary to increase Linux kernel allocable video memory at boot: &lt;pre class=&quot;APF&quot;&gt; BIOS&gt; setenv extrabootargs '${extrabootargs} cma=256...&quot;</p> <hr /> <div>==Tips==<br /> * For OpenGL/ES demos, it is necessary to increase Linux kernel allocable video memory at boot:<br /> &lt;pre class=&quot;APF&quot;&gt;<br /> BIOS&gt; setenv extrabootargs '${extrabootargs} cma=256M'<br /> &lt;/pre&gt;</div> JulienB http://www.armadeus.org/wiki/index.php?title=Framebuffer&diff=15115 Framebuffer 2023-01-18T11:16:57Z <p>JulienB: /* Login/Console */</p> <hr /> <div>On this page you will find usefull informations to have a working Linux Framebuffer on your board.<br /> <br /> ==Introduction==<br /> Linux Framebuffer is the lowest level (standardized) API for userspace programs to access video capabilities of the system you're running on. It allows you to directly &quot;draw&quot; your graphics in the video memory.<br /> Some higher level librairies can be put on top of the Framebuffer for more portability: [[SDL]], [[Qt/Embedded]], GTK, DirectFB, etc...<br /> <br /> ==Kernel configuration==<br /> {{Note | Framebuffer is already configured (for [[LQ043_Adapt|Sharp LQ043 LCD]] on [[APF9328]] and for Chimei LW700 on [[APF27]]/[[APF51]]) in standard/default Armadeus kernel image. [[APF28]] has a boot option to [[APF28Dev#Selecting_LCD|choose the LCD]].}}<br /> <br /> Instructions to configure Linux kernel were moved to [[Talk:FrameBuffer]] and are only given as references or if you want to change the default LCD.<br /> <br /> ==Userland==<br /> * Framebuffer device can be accessed with ''/dev/fb0''.<br /> <br /> * You can activate some tools from the Buildroot's menuconfig: <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;config&quot;&gt;<br /> Package Selection for the target<br /> ...<br /> Graphic libraries and applications (graphic/text) ---&gt; <br /> ...<br /> [*] fbgrab<br /> [*] fbtest<br /> [*] fbv<br /> ...<br /> ---&gt; Graphic libraries and applications (graphic/text) <br /> ---&gt; fbset/fbv/fbgrab<br /> &lt;/pre&gt;<br /> <br /> {{Note | As explain on [[LinuxInstall]] page, to compile '''fbtest''', ''libnetpbm10-dev'' must be installed in your host system}}<br /> <br /> * For example to grab a snapshot of the framebuffer:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # fbgrab /tmp/snapshot.png<br /> &lt;/pre&gt;<br /> <br /> * For example to display an image using standard image file formats PNG, GIF...:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # fbv myimage.png<br /> &lt;/pre&gt;<br /> <br /> ==Tips==<br /> <br /> ===Login/Console===<br /> * To stop blinking cursor:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 0 &gt; /sys/class/graphics/fbcon/cursor_blink<br /> &lt;/pre&gt;<br /> also possible at boot time (with 3.x recent kernels):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; setenv extrabootargs vt.global_cursor_default=0<br /> &lt;/pre&gt;<br /> * To make it blinking again:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 1 &gt; /sys/class/graphics/fbcon/cursor_blink<br /> &lt;/pre&gt;<br /> * To have a login on LCD, add these line in /etc/inittab of your rootfs:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # Set up a getty on LCD<br /> tty1::respawn:/sbin/getty 38400 tty1<br /> &lt;/pre&gt;<br /> <br /> ===Screenshot===<br /> * To grab a screenshot of a running Framebuffer application, use [[FBGrab]]<br /> <br /> ===Sleep===<br /> * To enter in Framebuffer sleep mode:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 1 &gt; /sys/class/graphics/fb0/blank<br /> &lt;/pre&gt;<br /> * To leave Framebuffer sleep power mode:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 0 &gt; /sys/class/graphics/fb0/blank<br /> &lt;/pre&gt;<br /> * To set &quot;sleep mode&quot;/screensaver entering time (where X is a time in minute; 0 = never):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo -e '\033[9;X]' &gt; /dev/tty1 (from serial console)<br /> &lt;/pre&gt;<br /> or<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo -e '\033[9;X]' (from framebuffer console)<br /> &lt;/pre&gt;<br /> or to set it at each boot, use ''/etc/inittab'':<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> tty1::sysinit:echo -e '\033[9;X]'<br /> &lt;/pre&gt;<br /> <br /> ==Other usefull ESC sequences==<br /> * To (definitly) hide cursor:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo -e '\033[?17;0;0c' &gt; /dev/tty1 (from serial console)<br /> &lt;/pre&gt;<br /> or<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo -e '\033[?17;0;0c' (from framebuffer console)<br /> &lt;/pre&gt;<br /> * inverse screen on:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo -e '\033[?5h' &gt; /dev/tty1<br /> &lt;/pre&gt;<br /> * inverse screen off:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo -e '\033[?5l' &gt; /dev/tty1<br /> &lt;/pre&gt;<br /> * To erase the screen<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> echo -e '\033[2J' &gt; /dev/tty1 (from serial console)<br /> &lt;/pre&gt;<br /> <br /> =Links=<br /> * [[Linux_Boot_Logo|How to change the Linux boot logo]]<br /> * [[i.MX6 Framebuffer Overlay|How to play with Framebuffer overlay on APF6]]<br /> * [http://lxr.linux.no/linux/Documentation/VGA-softcursor.txt How to configure soft cursor]<br /> * http://linux-fbdev.sourceforge.net/<br /> * [http://www-curri.u-strasbg.fr/documentation/calcul/doc/ProPack/3SP1/docs/man_html/man4/console_codes.4.html Linux console ESC sequences]<br /> * http://directfb.org/<br /> * [http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:drivers:fbcon Blackfin wiki page on the subject]<br /> <br /> [[Category:Graphical User Interface]]<br /> [[Category:Framebuffer]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=Framebuffer&diff=15114 Framebuffer 2023-01-18T11:15:26Z <p>JulienB: /* Tips */</p> <hr /> <div>On this page you will find usefull informations to have a working Linux Framebuffer on your board.<br /> <br /> ==Introduction==<br /> Linux Framebuffer is the lowest level (standardized) API for userspace programs to access video capabilities of the system you're running on. It allows you to directly &quot;draw&quot; your graphics in the video memory.<br /> Some higher level librairies can be put on top of the Framebuffer for more portability: [[SDL]], [[Qt/Embedded]], GTK, DirectFB, etc...<br /> <br /> ==Kernel configuration==<br /> {{Note | Framebuffer is already configured (for [[LQ043_Adapt|Sharp LQ043 LCD]] on [[APF9328]] and for Chimei LW700 on [[APF27]]/[[APF51]]) in standard/default Armadeus kernel image. [[APF28]] has a boot option to [[APF28Dev#Selecting_LCD|choose the LCD]].}}<br /> <br /> Instructions to configure Linux kernel were moved to [[Talk:FrameBuffer]] and are only given as references or if you want to change the default LCD.<br /> <br /> ==Userland==<br /> * Framebuffer device can be accessed with ''/dev/fb0''.<br /> <br /> * You can activate some tools from the Buildroot's menuconfig: <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;config&quot;&gt;<br /> Package Selection for the target<br /> ...<br /> Graphic libraries and applications (graphic/text) ---&gt; <br /> ...<br /> [*] fbgrab<br /> [*] fbtest<br /> [*] fbv<br /> ...<br /> ---&gt; Graphic libraries and applications (graphic/text) <br /> ---&gt; fbset/fbv/fbgrab<br /> &lt;/pre&gt;<br /> <br /> {{Note | As explain on [[LinuxInstall]] page, to compile '''fbtest''', ''libnetpbm10-dev'' must be installed in your host system}}<br /> <br /> * For example to grab a snapshot of the framebuffer:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # fbgrab /tmp/snapshot.png<br /> &lt;/pre&gt;<br /> <br /> * For example to display an image using standard image file formats PNG, GIF...:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # fbv myimage.png<br /> &lt;/pre&gt;<br /> <br /> ==Tips==<br /> <br /> ===Login/Console===<br /> * To stop blinking cursor:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 0 &gt; /sys/class/graphics/fbcon/cursor_blink<br /> &lt;/pre&gt;<br /> also possible at boot time (with 3.x recent kernels):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; setenv extrabootargs vt.global_cursor_default=0<br /> &lt;/pre&gt;<br /> * To make it blinking again:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 1 &gt; /sys/class/graphics/fbcon/cursor_blink<br /> &lt;/pre&gt;<br /> <br /> ===Screenshot===<br /> * To grab a screenshot of a running Framebuffer application, use [[FBGrab]]<br /> <br /> ===Sleep===<br /> * To enter in Framebuffer sleep mode:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 1 &gt; /sys/class/graphics/fb0/blank<br /> &lt;/pre&gt;<br /> * To leave Framebuffer sleep power mode:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 0 &gt; /sys/class/graphics/fb0/blank<br /> &lt;/pre&gt;<br /> * To set &quot;sleep mode&quot;/screensaver entering time (where X is a time in minute; 0 = never):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo -e '\033[9;X]' &gt; /dev/tty1 (from serial console)<br /> &lt;/pre&gt;<br /> or<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo -e '\033[9;X]' (from framebuffer console)<br /> &lt;/pre&gt;<br /> or to set it at each boot, use ''/etc/inittab'':<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> tty1::sysinit:echo -e '\033[9;X]'<br /> &lt;/pre&gt;<br /> <br /> ==Other usefull ESC sequences==<br /> * To (definitly) hide cursor:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo -e '\033[?17;0;0c' &gt; /dev/tty1 (from serial console)<br /> &lt;/pre&gt;<br /> or<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo -e '\033[?17;0;0c' (from framebuffer console)<br /> &lt;/pre&gt;<br /> * inverse screen on:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo -e '\033[?5h' &gt; /dev/tty1<br /> &lt;/pre&gt;<br /> * inverse screen off:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo -e '\033[?5l' &gt; /dev/tty1<br /> &lt;/pre&gt;<br /> * To erase the screen<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> echo -e '\033[2J' &gt; /dev/tty1 (from serial console)<br /> &lt;/pre&gt;<br /> <br /> =Links=<br /> * [[Linux_Boot_Logo|How to change the Linux boot logo]]<br /> * [[i.MX6 Framebuffer Overlay|How to play with Framebuffer overlay on APF6]]<br /> * [http://lxr.linux.no/linux/Documentation/VGA-softcursor.txt How to configure soft cursor]<br /> * http://linux-fbdev.sourceforge.net/<br /> * [http://www-curri.u-strasbg.fr/documentation/calcul/doc/ProPack/3SP1/docs/man_html/man4/console_codes.4.html Linux console ESC sequences]<br /> * http://directfb.org/<br /> * [http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:drivers:fbcon Blackfin wiki page on the subject]<br /> <br /> [[Category:Graphical User Interface]]<br /> [[Category:Framebuffer]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=Fluxbox&diff=15113 Fluxbox 2023-01-16T15:49:11Z <p>JulienB: /* Launching */</p> <hr /> <div><br /> ==Introduction==<br /> Fluxbox is a lightweight Window Manager for [[X11 server]]. It is notably used in [http://www.damnsmalllinux.org/ Dawn Small Linux] desktop distribution.<br /> <br /> ==Installation==<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make menuconfig<br /> &lt;/pre&gt;<br /> <br /> &lt;pre class=&quot;config&quot;&gt;<br /> Target packages ---&gt;<br /> Graphic libraries and applications (graphic/text) ---&gt;<br /> ...<br /> *** X window managers ***<br /> [*] fluxbox<br /> &lt;/pre&gt;<br /> <br /> ==Launching==<br /> * [[X11 server]] should be up and running<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # export DISPLAY=:O.0<br /> # fluxbox &amp;<br /> &lt;/pre&gt;<br /> <br /> [[Image:fluxbox.png|X server with fluxbox running on APF6 (1080p)|640px]]<br /> <br /> ==Links==<br /> * http://fluxbox.org/<br /> * http://xwinman.org/<br /> * http://www.damnsmalllinux.org/<br /> <br /> [[Category:X11]] [[Category:Graphical User Interface]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=QEMU&diff=15112 QEMU 2023-01-13T11:14:54Z <p>JulienB: /* Get/generate simulation images (Linux &amp; rootfs) */</p> <hr /> <div>{{Under_Construction}}<br /> <br /> Well, you don't have enough money to buy an Armadeus board and just want to be part of the &quot;Software&quot; side of the project ? Then QEMU can be a good choice for you !! &lt;br&gt;&lt;br&gt;<br /> {{Warning|<br /> Just be aware that currently Armadeus hardware is not emulated under QEMU, we are just using an other board hardware emulation (ARM Versatile) and Linux kernel to launch our rootfs and test our software which is not hardware related (ie User interface, Network, etc...)<br /> }}<br /> <br /> In order to build a hardware matching machine for Armadeus boards under Qemu, follow this link and add devices you are interested to see emulated in Qemu: <br /> [[QemuMachineDevelopment | Qemu machine development]]<br /> <br /> ==Installation==<br /> * on Debian, *Ubuntu just do a:<br /> [armadeus]$ sudo apt-get install qemu bridge-utils vde<br /> * on Kubuntu 9.10 do:<br /> [armadeus]$ sudo apt-get install qemu bridge-utils qemu-kvm-extras vde<br /> * on Ubuntu 20.04:<br /> &lt;pre&gt;<br /> $ sudo apt-get install qemu qemu-system-arm<br /> &lt;/pre&gt;<br /> <br /> ==Configuration==<br /> <br /> QEMU has several ways of emulating the network:<br /> * user mode (by default): you can access Internet from your emulated target or an internal Samba/TFTP server but your are not directly accessible<br /> * bridge mode: you can communicate directly with the Host<br /> <br /> &lt;br&gt;<br /> {{Note|For a first try you can skip following part and go directly [[QEMU#Get.2Fgenerate_simulation_images_.28Linux_.26_rootfs.29|here.]]}}<br /> As we want to mimic the devt environment with a real target (that has its own IP adress and is eccesible from the host) we will use &quot;bridged mode&quot;.<br /> This mode require some configuration on your Host:<br /> * Install ''bridge_utils'' package<br /> * Activate IPv4 forwarding, for example on Ubuntu, uncomment the following line in ''/etc/sysctl.conf'':<br /> &lt;pre class=host&gt;<br /> $ sudo vim /etc/sysctl.conf<br /> <br /> # Uncomment the next line to enable packet forwarding for IPv4<br /> #net/ipv4/ip_forward=1<br /> &lt;/pre&gt;<br /> * In ''/etc/network/interface'' comment the line referring to your current Ethernet card and replace them with:<br /> <br /> auto br0<br /> iface br0 inet dhcp<br /> bridge_ports eth0<br /> bridge_fd 9<br /> bridge_hello 2<br /> bridge_maxage 12<br /> bridge_stp off <br /> <br /> #auto eth0<br /> #iface eth0 inet dhcp<br /> {{Note|If you are using a modern linux distribution like Ubuntu, also be sure NetworkManager is disabled/not configured. Otherwise conflict occur and network does not work at all.}}<br /> <br /> * Create a script ''/etc/qemu-ifup'' that will be executed upon the start of QEMU:<br /> #!/bin/sh<br /> echo &quot;Executing /etc/qemu-ifup&quot;<br /> echo &quot;Bringing up $1 for bridged mode...&quot;<br /> sudo /sbin/ifconfig $1 0.0.0.0 promisc up<br /> echo &quot;Adding $1 to br0...&quot;<br /> sudo /usr/sbin/brctl addif br0 $1<br /> sleep 2<br /> <br /> * Now you can append the following options to the qemu command line:<br /> -net nic,vlan=0,macaddr=00:16:3e:00:00:01 -net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup<br /> You don't need to give a MAC address if you are emulating only one machine, as QEMU will use a default one. However if you have more than one emulated machine (don't forget QEMU can also emulate other architectures than ARM), you will have to specify a unique MAC address for each machine.<br /> <br /> * Once booted, on your guest you can configure the network simply as follows:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # udhcpc -i eth0<br /> &lt;/pre&gt;<br /> <br /> ==Get/generate simulation images (Linux &amp; rootfs)==<br /> <br /> {| border=&quot;1&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot; summary=&quot;&quot; class=&quot;wikitable&quot;<br /> |- style=&quot;background:#efefef;&quot; align=&quot;center&quot;<br /> ! APF27 !! APF6<br /> |-<br /> | * As QEMU doesn't support (yet) the APF, we will use the Versatile PB emulated hardware. To get a compatible Linux kernel for this board do:<br /> &lt;pre class=&quot;host&quot;&gt;$ cd your_armadeus_view/<br /> $ wget ftp://ftp2.armadeus.com/armadeusw/download/qemu/vmlinuz-2.6.29.6-versatile-armadeus&lt;/pre&gt;<br /> one wanting to rebuild this image itself will find the corresponding config file in the same dir. (after compiling, take ''arch/arm/boot/zImage'')<br /> || * As QEMU doesn't support (yet) the APF6, we will use the SabreLite emulated hardware.<br /> |}<br /> <br /> * get some useful environment variables:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make shell_env<br /> $ source armadeus_env.sh<br /> &lt;/pre&gt;<br /> * deactivate login on serial port:<br /> ** in Buildroot menuconfig:<br /> &lt;pre class=&quot;config&quot;&gt;<br /> System configuration ---&gt;<br /> () Port to run a getty (login prompt) on<br /> &lt;/pre&gt;<br /> : * and in ''$ARMADEUS_ROOTFS_DIR/etc/inittab'', comment following lines:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> # Put a getty on the serial port<br /> ttymxcX::respawn:/sbin/getty -L ttymxcX 115200 vt100 # GENERIC_SERIAL<br /> <br /> This can be achieved with sed :<br /> sed --in-place -e &quot;s/^ttymcX/#ttymcX/&quot; $ARMADEUS_ROOTFS_DIR/etc/inittab <br /> &lt;/pre&gt;<br /> * Re-generate your Armadeus rootfs:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make<br /> &lt;/pre&gt;<br /> {| border=&quot;1&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot; summary=&quot;&quot; class=&quot;wikitable&quot;<br /> |- style=&quot;background:#efefef;&quot; align=&quot;center&quot;<br /> ! APF27 !! APF6<br /> |-<br /> |* check the size of your rootfs image<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ ls -al $ARMADEUS_ROOTFS_TAR<br /> &lt;/pre&gt;<br /> * generate a dummy image larger than your rootfs; here 60 MBytes for a 45 MBytes tared rootfs:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ dd if=/dev/zero of=armadeus-qemu.img bs=1MB count=60<br /> $ sudo mke2fs -F -m 0 -b 1024 armadeus-qemu.img<br /> &lt;/pre&gt;<br /> * mount it and copy it your rootfs:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ mkdir qemu_mnt<br /> $ sudo mount -t ext2 -o loop armadeus-qemu.img qemu_mnt/<br /> $ sudo tar xf $ARMADEUS_ROOTFS_TAR -C qemu_mnt/<br /> $ sudo umount qemu_mnt/<br /> &lt;/pre&gt;<br /> |* APF6 has already EXT4 generated rootfs images<br /> |}<br /> * now you have all you need to launch Qemu<br /> <br /> ==Launch it==<br /> ===APF9328/27/51/28===<br /> * Example with 64 MBytes of RAM:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ qemu-system-arm -M versatilepb -kernel ./vmlinuz-2.6.29.6-versatile-armadeus -hda armadeus-qemu.img -m 64 \<br /> -append &quot;root=/dev/sda mem=64M ro&quot; (rw for read/write works, too instead of tw two last characters ro)<br /> &lt;/pre&gt;<br /> option ''-cpu arm926'' can be added on APF27 &lt;br&gt;<br /> <br /> ===APF6===<br /> * here we use i.MX6 sabrelite board emulation and APF6 generated kernel. One may modify his APF6 Linux configuration to increase Ramdisk max size if needed (64 Mbytes by default).<br /> &lt;pre clas=&quot;host&quot;&gt;<br /> $ qemu-system-arm -M sabrelite -smp 4 -m 1G -display none -serial null -serial stdio \<br /> -kernel buildroot/output/images/zImage \<br /> -dtb buildroot/output/build/linux-4.19.227/arch/arm/boot/dts/imx6q-sabrelite.dtb \<br /> -initrd buildroot/output/images/rootfs.ext4 -append &quot;root=/dev/ram&quot;<br /> &lt;/pre&gt;<br /> <br /> [[Image:qemu_apf_ramdisk.png]]<br /> <br /> ===Common tips===<br /> * When system has booted, if you are French, load a usable keymap:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # loadkmap &lt; /etc/i18n/fr.kmap<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;host&quot;&gt;<br /> =&gt; loqdk,qp &lt; !etc!i&amp;_n!fr:k,qp on your PC keyboard<br /> &lt;/pre&gt;<br /> Another solution is to generate the command one wants to lanch on your PC, with a normal keyboard layout<br /> <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $echo &quot;loadkmap&lt;/etc/i18n/fr.kmap&quot; &gt; kfr<br /> &lt;/pre&gt;<br /> <br /> or<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $echo &quot;loadkmap&lt;/etc/i18n/de.kmap&quot; &gt; kde<br /> <br /> chmod +x k*<br /> &lt;/pre&gt;<br /> <br /> and to copy it on the virtual image, before it is unmounted and qemu is launched<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $cp -uv k* $IMAGE/usr/local/bin/. # it will be in the guest PATH<br /> &lt;/pre&gt;<br /> <br /> Once qemu has been launched, and one is connected, just type kfr (or kde) to get a keyboard layout one is accustomed to (these letters are layout agnostic, and they can be directly executed).<br /> <br /> A bash script to avoid typing all these lines can be found here, and might make things simpler, if adapted.<br /> [[http://www.armadeus.com/wiki/index.php?title=User:DenisB]]<br /> <br /> ==To Be Continued... ;-) ==<br /> <br /> ==Links==<br /> * [http://fabrice.bellard.free.fr/qemu/ QEMU WebPage]<br /> * [http://www.aurel32.net/info/debian_arm_qemu.php Debian on an emulated ARM machine tutorial by Aurel32] + [http://qemu-forum.ipi.fi/viewtopic.php?t=3919 comments about it]<br /> * [http://909ers.apl.washington.edu/~dushaw/ARM/ Debian ARM Linux on Qemu]<br /> * http://www.gnome.org/~markmc/qemu-networking.html<br /> * [http://compsoc.dur.ac.uk/~djw/qemu.html QEMU - Debian - Linux - TUN/TAP - network bridge]<br /> * [http://gumstix.net/wiki/index.php?title=Running_qemu Gumstix's way of using QEmu]<br /> * [http://gumstix.net/wiki/index.php?title=Making_qemu_images Gumstix's way of generating QEmu's images]<br /> * [https://wiki.ubuntu.com/ARM/RootfsFromScratch Generating Ubuntu for ARM with QEMU]<br /> * [http://balau82.wordpress.com/2010/03/22/compiling-linux-kernel-for-qemu-arm-emulator/ compiling-linux-kernel-for-qemu-arm-emulator]<br /> <br /> <br /> [[Category:Emulation]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=QEMU&diff=15111 QEMU 2023-01-13T10:55:34Z <p>JulienB: /* Launch it */</p> <hr /> <div>{{Under_Construction}}<br /> <br /> Well, you don't have enough money to buy an Armadeus board and just want to be part of the &quot;Software&quot; side of the project ? Then QEMU can be a good choice for you !! &lt;br&gt;&lt;br&gt;<br /> {{Warning|<br /> Just be aware that currently Armadeus hardware is not emulated under QEMU, we are just using an other board hardware emulation (ARM Versatile) and Linux kernel to launch our rootfs and test our software which is not hardware related (ie User interface, Network, etc...)<br /> }}<br /> <br /> In order to build a hardware matching machine for Armadeus boards under Qemu, follow this link and add devices you are interested to see emulated in Qemu: <br /> [[QemuMachineDevelopment | Qemu machine development]]<br /> <br /> ==Installation==<br /> * on Debian, *Ubuntu just do a:<br /> [armadeus]$ sudo apt-get install qemu bridge-utils vde<br /> * on Kubuntu 9.10 do:<br /> [armadeus]$ sudo apt-get install qemu bridge-utils qemu-kvm-extras vde<br /> * on Ubuntu 20.04:<br /> &lt;pre&gt;<br /> $ sudo apt-get install qemu qemu-system-arm<br /> &lt;/pre&gt;<br /> <br /> ==Configuration==<br /> <br /> QEMU has several ways of emulating the network:<br /> * user mode (by default): you can access Internet from your emulated target or an internal Samba/TFTP server but your are not directly accessible<br /> * bridge mode: you can communicate directly with the Host<br /> <br /> &lt;br&gt;<br /> {{Note|For a first try you can skip following part and go directly [[QEMU#Get.2Fgenerate_simulation_images_.28Linux_.26_rootfs.29|here.]]}}<br /> As we want to mimic the devt environment with a real target (that has its own IP adress and is eccesible from the host) we will use &quot;bridged mode&quot;.<br /> This mode require some configuration on your Host:<br /> * Install ''bridge_utils'' package<br /> * Activate IPv4 forwarding, for example on Ubuntu, uncomment the following line in ''/etc/sysctl.conf'':<br /> &lt;pre class=host&gt;<br /> $ sudo vim /etc/sysctl.conf<br /> <br /> # Uncomment the next line to enable packet forwarding for IPv4<br /> #net/ipv4/ip_forward=1<br /> &lt;/pre&gt;<br /> * In ''/etc/network/interface'' comment the line referring to your current Ethernet card and replace them with:<br /> <br /> auto br0<br /> iface br0 inet dhcp<br /> bridge_ports eth0<br /> bridge_fd 9<br /> bridge_hello 2<br /> bridge_maxage 12<br /> bridge_stp off <br /> <br /> #auto eth0<br /> #iface eth0 inet dhcp<br /> {{Note|If you are using a modern linux distribution like Ubuntu, also be sure NetworkManager is disabled/not configured. Otherwise conflict occur and network does not work at all.}}<br /> <br /> * Create a script ''/etc/qemu-ifup'' that will be executed upon the start of QEMU:<br /> #!/bin/sh<br /> echo &quot;Executing /etc/qemu-ifup&quot;<br /> echo &quot;Bringing up $1 for bridged mode...&quot;<br /> sudo /sbin/ifconfig $1 0.0.0.0 promisc up<br /> echo &quot;Adding $1 to br0...&quot;<br /> sudo /usr/sbin/brctl addif br0 $1<br /> sleep 2<br /> <br /> * Now you can append the following options to the qemu command line:<br /> -net nic,vlan=0,macaddr=00:16:3e:00:00:01 -net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup<br /> You don't need to give a MAC address if you are emulating only one machine, as QEMU will use a default one. However if you have more than one emulated machine (don't forget QEMU can also emulate other architectures than ARM), you will have to specify a unique MAC address for each machine.<br /> <br /> * Once booted, on your guest you can configure the network simply as follows:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # udhcpc -i eth0<br /> &lt;/pre&gt;<br /> <br /> ==Get/generate simulation images (Linux &amp; rootfs)==<br /> * As QEMU doesn't support (yet) the APF, we will use the Versatile PB emulated hardware. To get a compatible Linux kernel for this board do:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ cd your_armadeus_view/<br /> $ wget ftp://ftp2.armadeus.com/armadeusw/download/qemu/vmlinuz-2.6.29.6-versatile-armadeus<br /> &lt;/pre&gt;<br /> one wanting to rebuild this image itself will find the correspondig config file in the same dir. (after compiling, take ''arch/arm/boot/zImage'')<br /> * get some useful environment variables:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make shell_env<br /> $ source armadeus_env.sh<br /> &lt;/pre&gt;<br /> * deactivate login on serial port:<br /> ** in Buildroot menuconfig:<br /> &lt;pre class=&quot;config&quot;&gt;<br /> System configuration ---&gt;<br /> () Port to run a getty (login prompt) on<br /> &lt;/pre&gt;<br /> : * and in ''$ARMADEUS_ROOTFS_DIR/etc/inittab'', comment following lines:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> # Put a getty on the serial port<br /> ttymxcX::respawn:/sbin/getty -L ttymxcX 115200 vt100 # GENERIC_SERIAL<br /> <br /> This can be achieved with sed :<br /> sed --in-place -e &quot;s/^ttymcX/#ttymcX/&quot; $ARMADEUS_ROOTFS_DIR/etc/inittab <br /> &lt;/pre&gt;<br /> * Re-generate your Armadeus rootfs:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make<br /> &lt;/pre&gt;<br /> * check the size of your rootfs image<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ ls -al $ARMADEUS_ROOTFS_TAR<br /> &lt;/pre&gt;<br /> * generate a dummy image larger than your rootfs; here 60 MBytes for a 45 MBytes tared rootfs:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ dd if=/dev/zero of=armadeus-qemu.img bs=1MB count=60<br /> $ sudo mke2fs -F -m 0 -b 1024 armadeus-qemu.img<br /> &lt;/pre&gt;<br /> * mount it and copy it your rootfs:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ mkdir qemu_mnt<br /> $ sudo mount -t ext2 -o loop armadeus-qemu.img qemu_mnt/<br /> $ sudo tar xf $ARMADEUS_ROOTFS_TAR -C qemu_mnt/<br /> $ sudo umount qemu_mnt/<br /> &lt;/pre&gt;<br /> * now you have all you need to launch Qemu<br /> <br /> ==Launch it==<br /> ===APF9328/27/51/28===<br /> * Example with 64 MBytes of RAM:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ qemu-system-arm -M versatilepb -kernel ./vmlinuz-2.6.29.6-versatile-armadeus -hda armadeus-qemu.img -m 64 \<br /> -append &quot;root=/dev/sda mem=64M ro&quot; (rw for read/write works, too instead of tw two last characters ro)<br /> &lt;/pre&gt;<br /> option ''-cpu arm926'' can be added on APF27 &lt;br&gt;<br /> <br /> ===APF6===<br /> * here we use i.MX6 sabrelite board emulation and APF6 generated kernel. One may modify his APF6 Linux configuration to increase Ramdisk max size if needed (64 Mbytes by default).<br /> &lt;pre clas=&quot;host&quot;&gt;<br /> $ qemu-system-arm -M sabrelite -smp 4 -m 1G -display none -serial null -serial stdio \<br /> -kernel buildroot/output/images/zImage \<br /> -dtb buildroot/output/build/linux-4.19.227/arch/arm/boot/dts/imx6q-sabrelite.dtb \<br /> -initrd buildroot/output/images/rootfs.ext4 -append &quot;root=/dev/ram&quot;<br /> &lt;/pre&gt;<br /> <br /> [[Image:qemu_apf_ramdisk.png]]<br /> <br /> ===Common tips===<br /> * When system has booted, if you are French, load a usable keymap:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # loadkmap &lt; /etc/i18n/fr.kmap<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;host&quot;&gt;<br /> =&gt; loqdk,qp &lt; !etc!i&amp;_n!fr:k,qp on your PC keyboard<br /> &lt;/pre&gt;<br /> Another solution is to generate the command one wants to lanch on your PC, with a normal keyboard layout<br /> <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $echo &quot;loadkmap&lt;/etc/i18n/fr.kmap&quot; &gt; kfr<br /> &lt;/pre&gt;<br /> <br /> or<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $echo &quot;loadkmap&lt;/etc/i18n/de.kmap&quot; &gt; kde<br /> <br /> chmod +x k*<br /> &lt;/pre&gt;<br /> <br /> and to copy it on the virtual image, before it is unmounted and qemu is launched<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $cp -uv k* $IMAGE/usr/local/bin/. # it will be in the guest PATH<br /> &lt;/pre&gt;<br /> <br /> Once qemu has been launched, and one is connected, just type kfr (or kde) to get a keyboard layout one is accustomed to (these letters are layout agnostic, and they can be directly executed).<br /> <br /> A bash script to avoid typing all these lines can be found here, and might make things simpler, if adapted.<br /> [[http://www.armadeus.com/wiki/index.php?title=User:DenisB]]<br /> <br /> ==To Be Continued... ;-) ==<br /> <br /> ==Links==<br /> * [http://fabrice.bellard.free.fr/qemu/ QEMU WebPage]<br /> * [http://www.aurel32.net/info/debian_arm_qemu.php Debian on an emulated ARM machine tutorial by Aurel32] + [http://qemu-forum.ipi.fi/viewtopic.php?t=3919 comments about it]<br /> * [http://909ers.apl.washington.edu/~dushaw/ARM/ Debian ARM Linux on Qemu]<br /> * http://www.gnome.org/~markmc/qemu-networking.html<br /> * [http://compsoc.dur.ac.uk/~djw/qemu.html QEMU - Debian - Linux - TUN/TAP - network bridge]<br /> * [http://gumstix.net/wiki/index.php?title=Running_qemu Gumstix's way of using QEmu]<br /> * [http://gumstix.net/wiki/index.php?title=Making_qemu_images Gumstix's way of generating QEmu's images]<br /> * [https://wiki.ubuntu.com/ARM/RootfsFromScratch Generating Ubuntu for ARM with QEMU]<br /> * [http://balau82.wordpress.com/2010/03/22/compiling-linux-kernel-for-qemu-arm-emulator/ compiling-linux-kernel-for-qemu-arm-emulator]<br /> <br /> <br /> [[Category:Emulation]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=QEMU&diff=15110 QEMU 2023-01-12T19:05:14Z <p>JulienB: /* Installation */</p> <hr /> <div>{{Under_Construction}}<br /> <br /> Well, you don't have enough money to buy an Armadeus board and just want to be part of the &quot;Software&quot; side of the project ? Then QEMU can be a good choice for you !! &lt;br&gt;&lt;br&gt;<br /> {{Warning|<br /> Just be aware that currently Armadeus hardware is not emulated under QEMU, we are just using an other board hardware emulation (ARM Versatile) and Linux kernel to launch our rootfs and test our software which is not hardware related (ie User interface, Network, etc...)<br /> }}<br /> <br /> In order to build a hardware matching machine for Armadeus boards under Qemu, follow this link and add devices you are interested to see emulated in Qemu: <br /> [[QemuMachineDevelopment | Qemu machine development]]<br /> <br /> ==Installation==<br /> * on Debian, *Ubuntu just do a:<br /> [armadeus]$ sudo apt-get install qemu bridge-utils vde<br /> * on Kubuntu 9.10 do:<br /> [armadeus]$ sudo apt-get install qemu bridge-utils qemu-kvm-extras vde<br /> * on Ubuntu 20.04:<br /> &lt;pre&gt;<br /> $ sudo apt-get install qemu qemu-system-arm<br /> &lt;/pre&gt;<br /> <br /> ==Configuration==<br /> <br /> QEMU has several ways of emulating the network:<br /> * user mode (by default): you can access Internet from your emulated target or an internal Samba/TFTP server but your are not directly accessible<br /> * bridge mode: you can communicate directly with the Host<br /> <br /> &lt;br&gt;<br /> {{Note|For a first try you can skip following part and go directly [[QEMU#Get.2Fgenerate_simulation_images_.28Linux_.26_rootfs.29|here.]]}}<br /> As we want to mimic the devt environment with a real target (that has its own IP adress and is eccesible from the host) we will use &quot;bridged mode&quot;.<br /> This mode require some configuration on your Host:<br /> * Install ''bridge_utils'' package<br /> * Activate IPv4 forwarding, for example on Ubuntu, uncomment the following line in ''/etc/sysctl.conf'':<br /> &lt;pre class=host&gt;<br /> $ sudo vim /etc/sysctl.conf<br /> <br /> # Uncomment the next line to enable packet forwarding for IPv4<br /> #net/ipv4/ip_forward=1<br /> &lt;/pre&gt;<br /> * In ''/etc/network/interface'' comment the line referring to your current Ethernet card and replace them with:<br /> <br /> auto br0<br /> iface br0 inet dhcp<br /> bridge_ports eth0<br /> bridge_fd 9<br /> bridge_hello 2<br /> bridge_maxage 12<br /> bridge_stp off <br /> <br /> #auto eth0<br /> #iface eth0 inet dhcp<br /> {{Note|If you are using a modern linux distribution like Ubuntu, also be sure NetworkManager is disabled/not configured. Otherwise conflict occur and network does not work at all.}}<br /> <br /> * Create a script ''/etc/qemu-ifup'' that will be executed upon the start of QEMU:<br /> #!/bin/sh<br /> echo &quot;Executing /etc/qemu-ifup&quot;<br /> echo &quot;Bringing up $1 for bridged mode...&quot;<br /> sudo /sbin/ifconfig $1 0.0.0.0 promisc up<br /> echo &quot;Adding $1 to br0...&quot;<br /> sudo /usr/sbin/brctl addif br0 $1<br /> sleep 2<br /> <br /> * Now you can append the following options to the qemu command line:<br /> -net nic,vlan=0,macaddr=00:16:3e:00:00:01 -net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup<br /> You don't need to give a MAC address if you are emulating only one machine, as QEMU will use a default one. However if you have more than one emulated machine (don't forget QEMU can also emulate other architectures than ARM), you will have to specify a unique MAC address for each machine.<br /> <br /> * Once booted, on your guest you can configure the network simply as follows:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # udhcpc -i eth0<br /> &lt;/pre&gt;<br /> <br /> ==Get/generate simulation images (Linux &amp; rootfs)==<br /> * As QEMU doesn't support (yet) the APF, we will use the Versatile PB emulated hardware. To get a compatible Linux kernel for this board do:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ cd your_armadeus_view/<br /> $ wget ftp://ftp2.armadeus.com/armadeusw/download/qemu/vmlinuz-2.6.29.6-versatile-armadeus<br /> &lt;/pre&gt;<br /> one wanting to rebuild this image itself will find the correspondig config file in the same dir. (after compiling, take ''arch/arm/boot/zImage'')<br /> * get some useful environment variables:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make shell_env<br /> $ source armadeus_env.sh<br /> &lt;/pre&gt;<br /> * deactivate login on serial port:<br /> ** in Buildroot menuconfig:<br /> &lt;pre class=&quot;config&quot;&gt;<br /> System configuration ---&gt;<br /> () Port to run a getty (login prompt) on<br /> &lt;/pre&gt;<br /> : * and in ''$ARMADEUS_ROOTFS_DIR/etc/inittab'', comment following lines:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> # Put a getty on the serial port<br /> ttymxcX::respawn:/sbin/getty -L ttymxcX 115200 vt100 # GENERIC_SERIAL<br /> <br /> This can be achieved with sed :<br /> sed --in-place -e &quot;s/^ttymcX/#ttymcX/&quot; $ARMADEUS_ROOTFS_DIR/etc/inittab <br /> &lt;/pre&gt;<br /> * Re-generate your Armadeus rootfs:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make<br /> &lt;/pre&gt;<br /> * check the size of your rootfs image<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ ls -al $ARMADEUS_ROOTFS_TAR<br /> &lt;/pre&gt;<br /> * generate a dummy image larger than your rootfs; here 60 MBytes for a 45 MBytes tared rootfs:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ dd if=/dev/zero of=armadeus-qemu.img bs=1MB count=60<br /> $ sudo mke2fs -F -m 0 -b 1024 armadeus-qemu.img<br /> &lt;/pre&gt;<br /> * mount it and copy it your rootfs:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ mkdir qemu_mnt<br /> $ sudo mount -t ext2 -o loop armadeus-qemu.img qemu_mnt/<br /> $ sudo tar xf $ARMADEUS_ROOTFS_TAR -C qemu_mnt/<br /> $ sudo umount qemu_mnt/<br /> &lt;/pre&gt;<br /> * now you have all you need to launch Qemu<br /> <br /> ==Launch it==<br /> * Example with 64 MBytes of RAM:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ qemu-system-arm -M versatilepb -kernel ./vmlinuz-2.6.29.6-versatile-armadeus -hda armadeus-qemu.img -m 64 \<br /> -append &quot;root=/dev/sda mem=64M ro&quot; (rw for read/write works, too instead of tw two last characters ro)<br /> &lt;/pre&gt;<br /> option ''-cpu arm926'' can be added on APF27 &lt;br&gt;<br /> [[Image:qemu_apf_ramdisk.png]]<br /> <br /> * When system has booted, if you are French, load a usable keymap:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # loadkmap &lt; /etc/i18n/fr.kmap<br /> &lt;/pre&gt;<br /> &lt;pre class=&quot;host&quot;&gt;<br /> =&gt; loqdk,qp &lt; !etc!i&amp;_n!fr:k,qp on your PC keyboard<br /> &lt;/pre&gt;<br /> Another solution is to generate the command one wants to lanch on your PC, with a normal keyboard layout<br /> <br /> &lt;pre class=&quot;host&quot;&gt;<br /> $echo &quot;loadkmap&lt;/etc/i18n/fr.kmap&quot; &gt; kfr<br /> &lt;/pre&gt;<br /> <br /> or<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $echo &quot;loadkmap&lt;/etc/i18n/de.kmap&quot; &gt; kde<br /> <br /> chmod +x k*<br /> &lt;/pre&gt;<br /> <br /> and to copy it on the virtual image, before it is unmounted and qemu is launched<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $cp -uv k* $IMAGE/usr/local/bin/. # it will be in the guest PATH<br /> &lt;/pre&gt;<br /> <br /> Once qemu has been launched, and one is connected, just type kfr (or kde) to get a keyboard layout one is accustomed to (these letters are layout agnostic, and they can be directly executed).<br /> <br /> A bash script to avoid typing all these lines can be found here, and might make things simpler, if adapted.<br /> [[http://www.armadeus.com/wiki/index.php?title=User:DenisB]]<br /> <br /> ==To Be Continued... ;-) ==<br /> <br /> ==Links==<br /> * [http://fabrice.bellard.free.fr/qemu/ QEMU WebPage]<br /> * [http://www.aurel32.net/info/debian_arm_qemu.php Debian on an emulated ARM machine tutorial by Aurel32] + [http://qemu-forum.ipi.fi/viewtopic.php?t=3919 comments about it]<br /> * [http://909ers.apl.washington.edu/~dushaw/ARM/ Debian ARM Linux on Qemu]<br /> * http://www.gnome.org/~markmc/qemu-networking.html<br /> * [http://compsoc.dur.ac.uk/~djw/qemu.html QEMU - Debian - Linux - TUN/TAP - network bridge]<br /> * [http://gumstix.net/wiki/index.php?title=Running_qemu Gumstix's way of using QEmu]<br /> * [http://gumstix.net/wiki/index.php?title=Making_qemu_images Gumstix's way of generating QEmu's images]<br /> * [https://wiki.ubuntu.com/ARM/RootfsFromScratch Generating Ubuntu for ARM with QEMU]<br /> * [http://balau82.wordpress.com/2010/03/22/compiling-linux-kernel-for-qemu-arm-emulator/ compiling-linux-kernel-for-qemu-arm-emulator]<br /> <br /> <br /> [[Category:Emulation]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=FLIR_Lepton_module_usage_on_APF_%26_OPOS&diff=15109 FLIR Lepton module usage on APF & OPOS 2022-09-28T13:32:16Z <p>JulienB: </p> <hr /> <div>{{Under_Construction}}<br /> <br /> FLIR Lepton(tm) thermal camera have been tested on [[APF6]] and [[OPOS6UL]] platforms. This page detail how to give it a quick try.<br /> <br /> ==Hardware==<br /> * you can use devt kit bought from [https://www.sparkfun.com/products/13233 sparkfun] or [https://www.digikey.fr/product-detail/fr/flir/250-0587-00/250-0587-00-ND/5266963 digikey]. Don't forget to buy breakout board AND the sensor ;-).<br /> * only 80x60 models have been tested yet<br /> <br /> ===Connecting Lepton breakout board to your Dev===<br /> <br /> {| border=&quot;1&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot; summary=&quot;PWM usage depending on kernel version&quot; class=&quot;wikitable&quot;<br /> |- style=&quot;background:#efefef;&quot; align=&quot;center&quot;<br /> ! APF6Dev || OPOS6ULDev<br /> |-----<br /> <br /> | You can use SPI1 on J5 connector (+3V3 and GND) &lt;br&gt;[[Image:apf6dev_j5.jpeg|480px]]<br /> {| border=&quot;1&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot; summary=&quot;Connection on J5&quot; class=&quot;wikitable&quot;<br /> |- style=&quot;background:#efefef;&quot; align=&quot;center&quot;<br /> ! J5 || Lepton(tm) breakout<br /> |-<br /> | +3V3 (pin 1) || VIN<br /> |-<br /> | GND (pin 19) || GND<br /> |-<br /> | SPI1_SCLK (pin 5) || CLK<br /> |-<br /> | SPI1_SS0 (pin 9) || CS<br /> |-<br /> | SPI1_MISO (pin 6) || MISO<br /> |-<br /> | NC/GND || MOSI<br /> |}<br /> <br /> || You can use SPI bus of RPi compatible connector:<br /> {| border=&quot;1&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot; summary=&quot;Connection on RPi connector of OPOS6ULDev&quot; class=&quot;wikitable&quot;<br /> |- style=&quot;background:#efefef;&quot; align=&quot;center&quot;<br /> ! J5 || Lepton(tm) breakout<br /> |-<br /> | +3V3 (pin 1) || VIN<br /> |-<br /> | GND (pin 9) || GND<br /> |-<br /> | SPI_CLK (pin 23) || CLK<br /> |-<br /> | SPI_CS0 (pin 24) || CS<br /> |-<br /> | SPI_MISO (pin 21) || MISO<br /> |-<br /> | NC/GND || MOSI<br /> |}<br /> <br /> |}<br /> <br /> ==Software==<br /> * Even if initially developped for platforms like RaspberryPi or BeagleBone, the following tools are able to run on APF/OPOS:<br /> https://github.com/groupgets/LeptonModule<br /> * flirpi: it converts and shows Lepton data to framebuffer<br /> * raspberry_capture: it can capture Letpon frames and store it as images or raw file<br /> * v4l2lepton: it takes data from Lepton, converts them to RGB and send them to v4l2loopback device. This way Lepton is directly usable with V4L compatible applications like gstreamer.<br /> <br /> All these software are using spidev interface to get data from Lepton, so before using them you have to:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # modprobe spidev<br /> &lt;/pre&gt;<br /> <br /> ===flirpi/fblept===<br /> * To display IR image on framebuffer (here magnified by 8x on [[APF6Dev]]):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ./fblept -m 8 -d /dev/spidev0.0<br /> &lt;/pre&gt;<br /> <br /> ===v4l2lepton===<br /> * First you have to load v4l2loopback kernel module:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # modprobe v4l2loopback<br /> &lt;/pre&gt;<br /> * It will create you a virtual video camera input in ''/dev/video0'' (if you don't have another camera on your system). To check it:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # v4l2-ctl -d /dev/video0 --all<br /> &lt;/pre&gt;<br /> * Then launch following the command (in background) to fill virtual camera buffer with IR images:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> ./v4l2lepton /dev/video0 &amp;<br /> &lt;/pre&gt;<br /> * Then you can use this device as a normal camera. Example to display Lepton image on [[APF6Dev]] LCD:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # gst-launch-1.0 v4l2src device=/dev/video0 ! imxg2dvideosink<br /> &lt;/pre&gt;<br /> * If your SOM has no IPU/2D accelerator, you can directly use software renderer in framebuffer:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! videoscale ! video/x-raw,width=320,height=240 ! fbdevsink<br /> &lt;/pre&gt;<br /> * You can also do H.264 encoding and send the stream on the network (here 192.168.0.X is the adress of the Host PC):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! videoscale ! \<br /> video/x-raw,width=320,height=240,framerate=30/1 ! imxvpuenc_h264 ! \<br /> rtph264pay ! udpsink host=192.168.0.X port=9001<br /> &lt;/pre&gt;<br /> * If you don't have any VPU (Video Processing Unit), you can use software encoding (slow):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc ! rtph264pay ! udpsink host=192.168.0.X port=9001<br /> &lt;/pre&gt;<br /> * If you have an i.MX6 SOM (and so a VPU and an IPU), you can even do HDMI display and H.264 encoding simultaneously:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! videoscale ! \<br /> video/x-raw,width=320,height=240,framerate=30/1 ! \<br /> tee name=t \<br /> t.src_0 ! queue ! imxg2dvideosink \<br /> t.src_1 ! queue ! imxvpuenc_h264 ! rtph264pay ! udpsink host=192.168.0.106 port=9001<br /> &lt;/pre&gt;<br /> * Result can be shown here (APF6Solo board): https://drive.google.com/open?id=0BzbWlgoGdX_HQldkNmVZdlBucDA<br /> <br /> ==Links==<br /> * [[SPI|SPI usage on Armadeus modules]]<br /> * http://www.flir.com/cores/lepton/<br /> <br /> [[Category:FLIR]]<br /> [[Category:gstreamer]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=OPOS8MMDev&diff=15091 OPOS8MMDev 2022-06-22T16:56:09Z <p>JulienB: /* Connectors */</p> <hr /> <div>[[Category: OPOS8MM]]<br /> <br /> {{Under_Construction}}<br /> <br /> ==Description==<br /> This is the Armadeus System's standard development board/baseboard for the [[OPOS8MM]] module.<br /> <br /> [[Image:OPOS8MM_Dev.png]]<br /> <br /> ==Errata==<br /> <br /> ==Resources==<br /> <br /> * [[Datasheet#OPOS8MMDev | Datasheet and schematics]]<br /> * [http://www.opossom.com/english/products-development_boards-opos8mm_dev.html Product page on Armadeus Systems website]<br /> <br /> ==Feature list==<br /> <br /> {| border=&quot;0&quot; cellpadding=&quot;5&quot; cellspacing=&quot;5&quot; summary=&quot;Hardware Add-Ons by functionnalities&quot;<br /> |----------------<br /> |- style=&quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&quot;<br /> |<br /> <br /> ===Audio===<br /> * [[S/PDIF]]: audio in/out<br /> * [[ALSA]]<br /> <br /> ===Video Out===<br /> * [[LCD]]<br /> * [[BackLight]]<br /> * [[FrameBuffer]]<br /> <br /> ===Video In===<br /> *[[Camera interface]]<br /> ||<br /> ===User Input===<br /> * [[Tslib|Touchscreen]]<br /> <br /> ===Wired communication===<br /> * [[Uart|UART]]<br /> * [[SPI]]<br /> * [[I2C]]<br /> * [[USB Host]] <br /> * [[USB_OTG]]<br /> * [[USB_Gadget]]<br /> * [[CAN_bus_Linux_driver|CAN bus]]<br /> * [[OneWire_GPIO_bus_Master|1-wire]]<br /> <br /> ===Storage===<br /> * [[MultiMediaCard]]<br /> ||<br /> <br /> ===Wireless communication===<br /> * [[Wifi|Wi-Fi usage on Linux]]<br /> * [[Bluetooth|Bluetooth usage on Linux]]<br /> <br /> ===Other===<br /> * [[I.MX6UL_internal_ADC|ADC]]<br /> * [[GPIOlib]]<br /> * [[JTAG]]<br /> <br /> |}<br /> <br /> ==Connectors==<br /> * RPi compatible connector (NC: Not Connected, NA: Not available):<br /> {| class=&quot;wikitable&quot; border=&quot;1&quot; cellpadding=&quot;5&quot; summary=&quot;RPi compatible connector of OPOS8MMDev&quot; style=&quot;text-align:center;&quot;<br /> |- style=&quot;background:#efefef; text-align:center;&quot;<br /> ! Linux GPIO or device !! i.MX8MM Mux config !! OPOS8MM Pin Name !! wiringPi N° !! RPi name !! Function !! JX Pin !! JX Pin !! Function !! RPi name !! wiringPi N° !! OPOS8MM Pin Name !! i.MX8MM Mux config !! Linux GPIO or device<br /> |-<br /> | - || -|| +3V3 || - || || '''3.3V''' || style=&quot;color:yellow;background:black;&quot; align=center | '''1''' || style=&quot;color:yellow;background:black;&quot; align=center | '''2''' || '''5V''' || || - || +5V || - || -<br /> |-<br /> | /dev/i2c-3 || || I2C4_SDA || || SDA1 || I2C data|| style=&quot;color:yellow;background:black;&quot; align=center | '''3''' || style=&quot;color:yellow;background:black;&quot; align=center | '''4''' || '''5V''' || || - || +5V || - || -<br /> |-<br /> | /dev/i2c-3 || || I2C4_SCL || || SCL1 || I2C clock || style=&quot;color:yellow;background:black;&quot; align=center | '''5''' || style=&quot;color:yellow;background:black;&quot; align=center | '''6''' || '''GND''' || || - || GND || - || -<br /> |-<br /> | pwm3 || GPIO1_IO14_PWM3_OUT || GPIO1_14 || 7 || GPIO7 || GPIO / AIN9 || style=&quot;color:yellow;background:black;&quot; align=center | '''7''' || style=&quot;color:yellow;background:black;&quot; align=center | '''8''' || UART Tx || TxD || || UART1_TX || SAI2_RXFS_UART1_DCE_TX ||/dev/ttymxc0<br /> |-<br /> | - || - || GND || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''9''' || style=&quot;color:yellow;background:black;&quot; align=center | '''10''' || UART Rx || RxD || || UART1_RX || SAI2_RXC_UART1_DCE_RX|| /dev/ttymxc0<br /> |-<br /> | gpio4 || GPIO1_IO04_GPIO1_IO4 || GPIO1_4 || 0 || GPIO0 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''11''' || style=&quot;color:yellow;background:black;&quot; align=center | '''12''' || GPIO / AIN8 || GPIO1 || || GPIO1_5 || GPIO1_IO05_GPIO1_IO5 || gpio5<br /> |-<br /> | gpio1 || GPIO1_IO01_GPIO1_IO1 || GPIO1_1 || || GPIO2 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''13''' || style=&quot;color:yellow;background:black;&quot; align=center | '''14''' || '''GND''' || GND || - || GND || - || -<br /> |-<br /> | gpio0 || GPIO1_IO00_GPIO1_IO0 || GPIO1_0 || || GPIO3 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''15''' || style=&quot;color:yellow;background:black;&quot; align=center | '''16''' || GPIO || GPIO4 || 4 || UART1_RTS || NA || NA<br /> |-<br /> | - || - || GND || - || || '''3,3V''' || style=&quot;color:yellow;background:black;&quot; align=center | '''17''' || style=&quot;color:yellow;background:black;&quot; align=center | '''18''' || GPIO || GPIO5 || 5 || UART1_CTS || NA || NA<br /> |-<br /> | || ECSPI1_MOSI_ECSPI1_MOSI || SPI1_MOSI|| || || SPI MOSI || style=&quot;color:yellow;background:black;&quot; align=center | '''19''' || style=&quot;color:yellow;background:black;&quot; align=center | '''20''' || '''GND''' || GND || - || GND || - || -<br /> |-<br /> | || ECSPI1_MOSI_ECSPI1_MISO || SPI1_MISO || || || SPI MISO || style=&quot;color:yellow;background:black;&quot; align=center | '''21''' || style=&quot;color:yellow;background:black;&quot; align=center | '''22''' || GPIO || GPIO6 || 6 || GPIO1_7 || GPIO1_IO07_GPIO1_IO7 || gpio7<br /> |-<br /> | || ECSPI1_MOSI_ECSPI1_MCLK || SPI1_SCLK || || || SPI CLK || style=&quot;color:yellow;background:black;&quot; align=center | '''23''' || style=&quot;color:yellow;background:black;&quot; align=center | '''24''' || SPI_CS0 || || || SPI1_SS0 || ECSPI1_SS0_GPIO5_IO9 || spi0 ?<br /> |-<br /> | - || - || GND || - || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''25''' || style=&quot;color:yellow;background:black;&quot; align=center | '''26''' || SPI_CS1 || || || GPIO1_6 || GPIO1_IO06_GPIO1_IO6 || spi0 ?<br /> |-<br /> | NA || NA || NC || || || I2C Data || style=&quot;color:yellow;background:black;&quot; align=center | '''27''' || style=&quot;color:yellow;background:black;&quot; align=center | '''28''' || I2C clock || || || NC || NA || NA<br /> |-<br /> | gpio8 || GPIO1_IO08_GPIO1_IO8 || GPIO1_8 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''29''' || style=&quot;color:yellow;background:black;&quot; align=center | '''30''' || '''GND''' || || || GND || - || -<br /> |-<br /> | gpio11 || GPIO1_IO11_GPIO1_IO11 || GPIO1_11 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''31''' || style=&quot;color:yellow;background:black;&quot; align=center | '''32''' || GPIO || || || UART3_TXD || UART3_TXD_GPIO5_IO27 || gpio155<br /> |-<br /> | gpio13 || GPIO1_IO13_GPIO1_IO13 || GPIO1_13 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''33''' || style=&quot;color:yellow;background:black;&quot; align=center | '''34''' || '''GND''' || || || GND || - || -<br /> |-<br /> | NA || NA || NC || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''35''' || style=&quot;color:yellow;background:black;&quot; align=center | '''36''' || GPIO || || || UART3_RXD || UART3_RXD_GPIO5_IO26 || gpio154<br /> |-<br /> | NA || NA || NC || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''37''' || style=&quot;color:yellow;background:black;&quot; align=center | '''38''' || GPIO || || || NC || NA || NA<br /> |-<br /> | - || - || GND|| || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''39''' || style=&quot;color:yellow;background:black;&quot; align=center | '''40''' || GPIO / 1-Wire || || || NC || NA || NA<br /> |}<br /> <br /> ==Tested RPi shields/hats==<br /> * [[Dragino Lora/GPS HAT]]<br /> * [[PiTinfoV1.2 HAT]]<br /> <br /> ==Tips==<br /> ===Bootstrap===<br /> * Put ''Boot0'' jumper to go in [[Bootstrap]] mode<br /> <br /> ===U-Boot===<br /> * Use OPOS6ULDev &quot;User&quot; LED in U-Boot scripts:<br /> ** ON: &lt;pre class=&quot;apf&quot;&gt; BIOS&gt; gpio set 68 &lt;/pre&gt;<br /> ** OFF: &lt;pre class=&quot;apf&quot;&gt; BIOS&gt; gpio clear 68 &lt;/pre&gt;<br /> <br /> ===Linux===<br /> * to activate login in Framebuffer console, please uncomment ''/etc/inittab'' line 35 this way:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # Set up a getty on LCD<br /> tty1::respawn:/sbin/getty 38400 tty1<br /> &lt;/pre&gt;<br /> <br /> =Links=<br /> * RaspberryPi is a registered trademark of RaspberryPi Foundation.<br /> <br /> [[Category:DevelopmentBoards]]<br /> [[Category:Hardware]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=OPOS8MMDev&diff=15090 OPOS8MMDev 2022-06-22T16:32:26Z <p>JulienB: /* Connectors */</p> <hr /> <div>[[Category: OPOS8MM]]<br /> <br /> {{Under_Construction}}<br /> <br /> ==Description==<br /> This is the Armadeus System's standard development board/baseboard for the [[OPOS8MM]] module.<br /> <br /> [[Image:OPOS8MM_Dev.png]]<br /> <br /> ==Errata==<br /> <br /> ==Resources==<br /> <br /> * [[Datasheet#OPOS8MMDev | Datasheet and schematics]]<br /> * [http://www.opossom.com/english/products-development_boards-opos8mm_dev.html Product page on Armadeus Systems website]<br /> <br /> ==Feature list==<br /> <br /> {| border=&quot;0&quot; cellpadding=&quot;5&quot; cellspacing=&quot;5&quot; summary=&quot;Hardware Add-Ons by functionnalities&quot;<br /> |----------------<br /> |- style=&quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&quot;<br /> |<br /> <br /> ===Audio===<br /> * [[S/PDIF]]: audio in/out<br /> * [[ALSA]]<br /> <br /> ===Video Out===<br /> * [[LCD]]<br /> * [[BackLight]]<br /> * [[FrameBuffer]]<br /> <br /> ===Video In===<br /> *[[Camera interface]]<br /> ||<br /> ===User Input===<br /> * [[Tslib|Touchscreen]]<br /> <br /> ===Wired communication===<br /> * [[Uart|UART]]<br /> * [[SPI]]<br /> * [[I2C]]<br /> * [[USB Host]] <br /> * [[USB_OTG]]<br /> * [[USB_Gadget]]<br /> * [[CAN_bus_Linux_driver|CAN bus]]<br /> * [[OneWire_GPIO_bus_Master|1-wire]]<br /> <br /> ===Storage===<br /> * [[MultiMediaCard]]<br /> ||<br /> <br /> ===Wireless communication===<br /> * [[Wifi|Wi-Fi usage on Linux]]<br /> * [[Bluetooth|Bluetooth usage on Linux]]<br /> <br /> ===Other===<br /> * [[I.MX6UL_internal_ADC|ADC]]<br /> * [[GPIOlib]]<br /> * [[JTAG]]<br /> <br /> |}<br /> <br /> ==Connectors==<br /> * RPi compatible connector (NC: Not Connected, NA: Not available):<br /> {| class=&quot;wikitable&quot; border=&quot;1&quot; cellpadding=&quot;5&quot; summary=&quot;RPi compatible connector of OPOS8MMDev&quot;<br /> |- style=&quot;background:#efefef;&quot;<br /> ! Linux GPIO or device !! i.MX8MM Mux config !! OPOS8MM Pin Name !! wiringPi N° !! RPi name !! Function !! JX Pin !! JX Pin !! Function !! RPi name !! wiringPi N° !! OPOS8MM Pin Name !! i.MX8MM Mux config !! Linux GPIO or device<br /> |-<br /> | - || || +3V3 || || || '''3.3V''' || style=&quot;color:yellow;background:black;&quot; align=center | '''1''' || style=&quot;color:yellow;background:black;&quot; align=center | '''2''' || '''5V''' || || || +5V || || -<br /> |-<br /> | /dev/i2c-3 || || I2C4_SDA || || SDA1 || I2C data|| style=&quot;color:yellow;background:black;&quot; align=center | '''3''' || style=&quot;color:yellow;background:black;&quot; align=center | '''4''' || '''5V''' || || || +5V || || -<br /> |-<br /> | /dev/i2c-3 || || I2C4_SCL || || SCL1 || I2C clock || style=&quot;color:yellow;background:black;&quot; align=center | '''5''' || style=&quot;color:yellow;background:black;&quot; align=center | '''6''' || '''GND''' || || || GND || || -<br /> |-<br /> | pwm3 || GPIO1_IO14_PWM3_OUT || GPIO1_14 || 7 || GPIO7 || GPIO / AIN9 || style=&quot;color:yellow;background:black;&quot; align=center | '''7''' || style=&quot;color:yellow;background:black;&quot; align=center | '''8''' || UART Tx || TxD || || UART1_TX|| ||/dev/ttymxc?<br /> |-<br /> | || || GND || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''9''' || style=&quot;color:yellow;background:black;&quot; align=center | '''10''' || UART Rx || RxD || || UART1_RX || || /dev/ttymxc?<br /> |-<br /> | gpio4 || GPIO1_IO04_GPIO1_IO4 || GPIO1_4 || 0 || GPIO0 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''11''' || style=&quot;color:yellow;background:black;&quot; align=center | '''12''' || GPIO / AIN8 || GPIO1 || || GPIO1_5 || || gpio?<br /> |-<br /> | gpio1 || GPIO1_IO01_GPIO1_IO1 || GPIO1_1 || || GPIO2 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''13''' || style=&quot;color:yellow;background:black;&quot; align=center | '''14''' || '''GND''' || || || GND || || <br /> |-<br /> | gpio0 || GPIO1_IO00_GPIO1_IO0 || GPIO1_0 || || GPIO3 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''15''' || style=&quot;color:yellow;background:black;&quot; align=center | '''16''' || GPIO || GPIO4 || 4 || UART1_RTS || || gpio?<br /> |-<br /> | || || GND || || || '''3,3V''' || style=&quot;color:yellow;background:black;&quot; align=center | '''17''' || style=&quot;color:yellow;background:black;&quot; align=center | '''18''' || GPIO || GPIO5 || 5 || UART1_CTS || || gpio?<br /> |-<br /> | || ECSPI1_MOSI_ECSPI1_MOSI || SPI1_MOSI|| || || SPI MOSI || style=&quot;color:yellow;background:black;&quot; align=center | '''19''' || style=&quot;color:yellow;background:black;&quot; align=center | '''20''' || '''GND''' || GND || || GND || ||<br /> |-<br /> | || ECSPI1_MOSI_ECSPI1_MISO || SPI1_MISO || || || SPI MISO || style=&quot;color:yellow;background:black;&quot; align=center | '''21''' || style=&quot;color:yellow;background:black;&quot; align=center | '''22''' || GPIO || GPIO6 || 6 || GPIO1_7 || || gpio?<br /> |-<br /> | || ECSPI1_MOSI_ECSPI1_MCLK || SPI1_SCLK || || || SPI CLK || style=&quot;color:yellow;background:black;&quot; align=center | '''23''' || style=&quot;color:yellow;background:black;&quot; align=center | '''24''' || SPI_CS0 || || || SPI1_SS0 || ECSPI1_SS0_GPIO5_IO9 || spi0 ?<br /> |-<br /> | || || GND || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''25''' || style=&quot;color:yellow;background:black;&quot; align=center | '''26''' || SPI_CS1 || || || GPIO1_6 || GPIO1_IO06_GPIO1_IO6 || spi0 ?<br /> |-<br /> | || || Not Used || || || I2C Data || style=&quot;color:yellow;background:black;&quot; align=center | '''27''' || style=&quot;color:yellow;background:black;&quot; align=center | '''28''' || I2C clock || || || NC || NA || NA<br /> |-<br /> | gpio8 || GPIO1_IO08_GPIO1_IO8 || GPIO1_8 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''29''' || style=&quot;color:yellow;background:black;&quot; align=center | '''30''' || '''GND''' || || || GND || || <br /> |-<br /> | gpio11 || GPIO1_IO11_GPIO1_IO11 || GPIO1_11 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''31''' || style=&quot;color:yellow;background:black;&quot; align=center | '''32''' || GPIO || || || UART3_TXD || SNVS_TAMPER0__GPIO5_IO00 || gpio?<br /> |-<br /> | gpio13 || GPIO1_IO13_GPIO1_IO13 || GPIO1_13 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''33''' || style=&quot;color:yellow;background:black;&quot; align=center | '''34''' || '''GND''' || || || GND || ||<br /> |-<br /> | NA || NA || NC || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''35''' || style=&quot;color:yellow;background:black;&quot; align=center | '''36''' || GPIO || || || UART3_RXD || || gpio?<br /> |-<br /> | NA || NA || NC || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''37''' || style=&quot;color:yellow;background:black;&quot; align=center | '''38''' || GPIO || || || Not Used || || gpio?<br /> |-<br /> | || || GND|| || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''39''' || style=&quot;color:yellow;background:black;&quot; align=center | '''40''' || GPIO / 1-Wire || || || NC || NA || NA<br /> |}<br /> <br /> ==Tested RPi shields/hats==<br /> * [[Dragino Lora/GPS HAT]]<br /> * [[PiTinfoV1.2 HAT]]<br /> <br /> ==Tips==<br /> ===Bootstrap===<br /> * Put ''Boot0'' jumper to go in [[Bootstrap]] mode<br /> <br /> ===U-Boot===<br /> * Use OPOS6ULDev &quot;User&quot; LED in U-Boot scripts:<br /> ** ON: &lt;pre class=&quot;apf&quot;&gt; BIOS&gt; gpio set 68 &lt;/pre&gt;<br /> ** OFF: &lt;pre class=&quot;apf&quot;&gt; BIOS&gt; gpio clear 68 &lt;/pre&gt;<br /> <br /> ===Linux===<br /> * to activate login in Framebuffer console, please uncomment ''/etc/inittab'' line 35 this way:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # Set up a getty on LCD<br /> tty1::respawn:/sbin/getty 38400 tty1<br /> &lt;/pre&gt;<br /> <br /> =Links=<br /> * RaspberryPi is a registered trademark of RaspberryPi Foundation.<br /> <br /> [[Category:DevelopmentBoards]]<br /> [[Category:Hardware]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=OPOS8MMDev&diff=15084 OPOS8MMDev 2022-06-22T10:41:27Z <p>JulienB: /* Connectors */</p> <hr /> <div>[[Category: OPOS8MM]]<br /> <br /> {{Under_Construction}}<br /> <br /> ==Description==<br /> This is the Armadeus System's standard development board/baseboard for the [[OPOS8MM]] module.<br /> <br /> [[Image:OPOS8MM_Dev.png]]<br /> <br /> ==Errata==<br /> <br /> ==Resources==<br /> <br /> * [[Datasheet#OPOS8MMDev | Datasheet and schematics]]<br /> * [http://www.opossom.com/english/products-development_boards-opos8mm_dev.html Product page on Armadeus Systems website]<br /> <br /> ==Feature list==<br /> <br /> {| border=&quot;0&quot; cellpadding=&quot;5&quot; cellspacing=&quot;5&quot; summary=&quot;Hardware Add-Ons by functionnalities&quot;<br /> |----------------<br /> |- style=&quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&quot;<br /> |<br /> <br /> ===Audio===<br /> * [[S/PDIF]]: audio in/out<br /> * [[ALSA]]<br /> <br /> ===Video Out===<br /> * [[LCD]]<br /> * [[BackLight]]<br /> * [[FrameBuffer]]<br /> <br /> ===Video In===<br /> *[[Camera interface]]<br /> ||<br /> ===User Input===<br /> * [[Tslib|Touchscreen]]<br /> <br /> ===Wired communication===<br /> * [[Uart|UART]]<br /> * [[SPI]]<br /> * [[I2C]]<br /> * [[USB Host]] <br /> * [[USB_OTG]]<br /> * [[USB_Gadget]]<br /> * [[CAN_bus_Linux_driver|CAN bus]]<br /> * [[OneWire_GPIO_bus_Master|1-wire]]<br /> <br /> ===Storage===<br /> * [[MultiMediaCard]]<br /> ||<br /> <br /> ===Wireless communication===<br /> * [[Wifi|Wi-Fi usage on Linux]]<br /> * [[Bluetooth|Bluetooth usage on Linux]]<br /> <br /> ===Other===<br /> * [[I.MX6UL_internal_ADC|ADC]]<br /> * [[GPIOlib]]<br /> * [[JTAG]]<br /> <br /> |}<br /> <br /> ==Connectors==<br /> * RPi compatible connector:<br /> {| class=&quot;wikitable&quot; border=&quot;1&quot; cellpadding=&quot;5&quot; summary=&quot;RPi compatible connector of OPOS8MMDev&quot;<br /> |- style=&quot;background:#efefef;&quot;<br /> ! Linux GPIO or device !! i.MX8MM Mux config !! OPOS8MM Pin Name !! wiringPi N° !! RPi name !! Function !! JX Pin !! JX Pin !! Function !! RPi name !! wiringPi N° !! OPOS8MM Pin Name !! i.MX8MM Mux config !! Linux GPIO or device<br /> |-<br /> | - || || || || || '''3.3V''' || style=&quot;color:yellow;background:black;&quot; align=center | '''1''' || style=&quot;color:yellow;background:black;&quot; align=center | '''2''' || '''5V''' || || || || || -<br /> |-<br /> | /dev/i2c-? || || || || SDA1 || I2C data|| style=&quot;color:yellow;background:black;&quot; align=center | '''3''' || style=&quot;color:yellow;background:black;&quot; align=center | '''4''' || '''5V''' || || || || || -<br /> |-<br /> | /dev/i2c-? || || || || SCL1 || I2C clock || style=&quot;color:yellow;background:black;&quot; align=center | '''5''' || style=&quot;color:yellow;background:black;&quot; align=center | '''6''' || '''GND''' || || || || || -<br /> |-<br /> | gpio? || || || 7 || GPIO7 || GPIO / AIN9 || style=&quot;color:yellow;background:black;&quot; align=center | '''7''' || style=&quot;color:yellow;background:black;&quot; align=center | '''8''' || UART Tx || TxD || || || ||/dev/ttymxc?<br /> |-<br /> | || || || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''9''' || style=&quot;color:yellow;background:black;&quot; align=center | '''10''' || UART Rx || RxD || || || || /dev/ttymxc?<br /> |-<br /> | gpio? || || || 0 || GPIO0 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''11''' || style=&quot;color:yellow;background:black;&quot; align=center | '''12''' || GPIO / AIN8 || GPIO1 || || || || gpio?<br /> |-<br /> | gpio? || || || || GPIO2 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''13''' || style=&quot;color:yellow;background:black;&quot; align=center | '''14''' || '''GND''' || || || || || <br /> |-<br /> | gpio? || || || || GPIO3 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''15''' || style=&quot;color:yellow;background:black;&quot; align=center | '''16''' || GPIO || GPIO4 || 4 || || || gpio?<br /> |-<br /> | || || || || || '''3,3V''' || style=&quot;color:yellow;background:black;&quot; align=center | '''17''' || style=&quot;color:yellow;background:black;&quot; align=center | '''18''' || GPIO || GPIO5 || 5 || || || gpio?<br /> |-<br /> | || || || || || SPI MOSI || style=&quot;color:yellow;background:black;&quot; align=center | '''19''' || style=&quot;color:yellow;background:black;&quot; align=center | '''20''' || '''GND''' || || || || <br /> |-<br /> | || || || || || SPI MISO || style=&quot;color:yellow;background:black;&quot; align=center | '''21''' || style=&quot;color:yellow;background:black;&quot; align=center | '''22''' || GPIO || GPIO6 || 6 || || || gpio?<br /> |-<br /> | || || || || || SPI CLK || style=&quot;color:yellow;background:black;&quot; align=center | '''23''' || style=&quot;color:yellow;background:black;&quot; align=center | '''24''' || SPI_CS0 || || || || ||<br /> |-<br /> | || || || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''25''' || style=&quot;color:yellow;background:black;&quot; align=center | '''26''' || SPI_CS1 || || || || ||<br /> |-<br /> | || || || || || I2C Data || style=&quot;color:yellow;background:black;&quot; align=center | '''27''' || style=&quot;color:yellow;background:black;&quot; align=center | '''28''' || I2C clock || || || || ||<br /> |-<br /> | gpio? || || || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''29''' || style=&quot;color:yellow;background:black;&quot; align=center | '''30''' || '''GND''' || || || || || <br /> |-<br /> | || || || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''31''' || style=&quot;color:yellow;background:black;&quot; align=center | '''32''' || GPIO || || || || SNVS_TAMPER0__GPIO5_IO00 || gpio?<br /> |-<br /> | gpio? || || || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''33''' || style=&quot;color:yellow;background:black;&quot; align=center | '''34''' || '''GND''' || || || || ||<br /> |-<br /> | gpio? || || || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''35''' || style=&quot;color:yellow;background:black;&quot; align=center | '''36''' || GPIO || || || || || gpio?<br /> |-<br /> | || || || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''37''' || style=&quot;color:yellow;background:black;&quot; align=center | '''38''' || GPIO || || || || || gpio?<br /> |-<br /> | || || || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''39''' || style=&quot;color:yellow;background:black;&quot; align=center | '''40''' || GPIO / 1-Wire || || || || || gpio?<br /> |}<br /> <br /> ==Tested RPi shields/hats==<br /> * [[Dragino Lora/GPS HAT]]<br /> * [[PiTinfoV1.2 HAT]]<br /> <br /> ==Tips==<br /> ===Bootstrap===<br /> * Put ''Boot0'' jumper to go in [[Bootstrap]] mode<br /> <br /> ===U-Boot===<br /> * Use OPOS6ULDev &quot;User&quot; LED in U-Boot scripts:<br /> ** ON: &lt;pre class=&quot;apf&quot;&gt; BIOS&gt; gpio set 68 &lt;/pre&gt;<br /> ** OFF: &lt;pre class=&quot;apf&quot;&gt; BIOS&gt; gpio clear 68 &lt;/pre&gt;<br /> <br /> ===Linux===<br /> * to activate login in Framebuffer console, please uncomment ''/etc/inittab'' line 35 this way:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # Set up a getty on LCD<br /> tty1::respawn:/sbin/getty 38400 tty1<br /> &lt;/pre&gt;<br /> <br /> =Links=<br /> * RaspberryPi is a registered trademark of RaspberryPi Foundation.<br /> <br /> [[Category:DevelopmentBoards]]<br /> [[Category:Hardware]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=OPOS8MMDev&diff=15083 OPOS8MMDev 2022-06-22T09:29:25Z <p>JulienB: /* Connectors */</p> <hr /> <div>[[Category: OPOS8MM]]<br /> <br /> {{Under_Construction}}<br /> <br /> ==Description==<br /> This is the Armadeus System's standard development board/baseboard for the [[OPOS8MM]] module.<br /> <br /> [[Image:OPOS8MM_Dev.png]]<br /> <br /> ==Errata==<br /> <br /> ==Resources==<br /> <br /> * [[Datasheet#OPOS8MMDev | Datasheet and schematics]]<br /> * [http://www.opossom.com/english/products-development_boards-opos8mm_dev.html Product page on Armadeus Systems website]<br /> <br /> ==Feature list==<br /> <br /> {| border=&quot;0&quot; cellpadding=&quot;5&quot; cellspacing=&quot;5&quot; summary=&quot;Hardware Add-Ons by functionnalities&quot;<br /> |----------------<br /> |- style=&quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&quot;<br /> |<br /> <br /> ===Audio===<br /> * [[S/PDIF]]: audio in/out<br /> * [[ALSA]]<br /> <br /> ===Video Out===<br /> * [[LCD]]<br /> * [[BackLight]]<br /> * [[FrameBuffer]]<br /> <br /> ===Video In===<br /> *[[Camera interface]]<br /> ||<br /> ===User Input===<br /> * [[Tslib|Touchscreen]]<br /> <br /> ===Wired communication===<br /> * [[Uart|UART]]<br /> * [[SPI]]<br /> * [[I2C]]<br /> * [[USB Host]] <br /> * [[USB_OTG]]<br /> * [[USB_Gadget]]<br /> * [[CAN_bus_Linux_driver|CAN bus]]<br /> * [[OneWire_GPIO_bus_Master|1-wire]]<br /> <br /> ===Storage===<br /> * [[MultiMediaCard]]<br /> ||<br /> <br /> ===Wireless communication===<br /> * [[Wifi|Wi-Fi usage on Linux]]<br /> * [[Bluetooth|Bluetooth usage on Linux]]<br /> <br /> ===Other===<br /> * [[I.MX6UL_internal_ADC|ADC]]<br /> * [[GPIOlib]]<br /> * [[JTAG]]<br /> <br /> |}<br /> <br /> ==Connectors==<br /> * RPi compatible connector:<br /> {| class=&quot;wikitable&quot; border=&quot;1&quot; cellpadding=&quot;5&quot; summary=&quot;RPi compatible connector of OPOS8MMDev&quot;<br /> |- style=&quot;background:#efefef;&quot;<br /> ! Linux GPIO or device !! i.MX8MM Mux !! wiringPi N° !! RPi name !! Function !! JX Pin !! JX Pin !! Function !! RPi name !! wiringPi N° !! i.MX8MM Mux !! Linux GPIO or device<br /> |-<br /> | - || || || || '''3.3V''' || style=&quot;color:yellow;background:black;&quot; align=center | '''1''' || style=&quot;color:yellow;background:black;&quot; align=center | '''2''' || '''5V''' || || || || -<br /> |-<br /> | /dev/i2c-1 || UART5_RX_DATA || || SDA1 || I2C data|| style=&quot;color:yellow;background:black;&quot; align=center | '''3''' || style=&quot;color:yellow;background:black;&quot; align=center | '''4''' || '''5V''' || || || || -<br /> |-<br /> | /dev/i2c-1 || UART5_TX_DATA || || SCL1 || I2C clock || style=&quot;color:yellow;background:black;&quot; align=center | '''5''' || style=&quot;color:yellow;background:black;&quot; align=center | '''6''' || '''GND''' || || || || -<br /> |-<br /> | gpio9 || GPIO1_IO09__GPIO1_IO09 || 7 || GPIO7 || GPIO / AIN9 || style=&quot;color:yellow;background:black;&quot; align=center | '''7''' || style=&quot;color:yellow;background:black;&quot; align=center | '''8''' || UART Tx || TxD || || ||/dev/ttymxc1<br /> |-<br /> | || || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''9''' || style=&quot;color:yellow;background:black;&quot; align=center | '''10''' || UART Rx || RxD || || || /dev/ttymxc1<br /> |-<br /> | gpio24 || UART3_TX_DATA__GPIO1_IO24 || 0 || GPIO0 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''11''' || style=&quot;color:yellow;background:black;&quot; align=center | '''12''' || GPIO / AIN8 || GPIO1 || || GPIO1_IO08__GPIO1_IO08 || gpio8<br /> |-<br /> | gpio25 || UART3_RX_DATA__GPIO1_IO25 || || GPIO2 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''13''' || style=&quot;color:yellow;background:black;&quot; align=center | '''14''' || '''GND''' || || || || <br /> |-<br /> | gpio96 || NAND_RE_B__GPIO4_IO00 || || GPIO3 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''15''' || style=&quot;color:yellow;background:black;&quot; align=center | '''16''' || GPIO || GPIO4 || 4 || UART1_CTS_B__GPIO1_IO18 || gpio18<br /> |-<br /> | || || || || '''3,3V''' || style=&quot;color:yellow;background:black;&quot; align=center | '''17''' || style=&quot;color:yellow;background:black;&quot; align=center | '''18''' || GPIO || GPIO5 || 5 || UART1_RTS_B__GPIO1_IO19 || gpio19<br /> |-<br /> | || || || || SPI MOSI || style=&quot;color:yellow;background:black;&quot; align=center | '''19''' || style=&quot;color:yellow;background:black;&quot; align=center | '''20''' || '''GND''' || || || || <br /> |-<br /> | || || || || SPI MISO || style=&quot;color:yellow;background:black;&quot; align=center | '''21''' || style=&quot;color:yellow;background:black;&quot; align=center | '''22''' || GPIO || GPIO6 || 6 || NAND_WE_B__GPIO4_IO01 || gpio97 <br /> |-<br /> | || || || || SPI CLK || style=&quot;color:yellow;background:black;&quot; align=center | '''23''' || style=&quot;color:yellow;background:black;&quot; align=center | '''24''' || SPI_CS0 || || || ||<br /> |-<br /> | || || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''25''' || style=&quot;color:yellow;background:black;&quot; align=center | '''26''' || SPI_CS1 || || || ||<br /> |-<br /> | || || || || I2C Data || style=&quot;color:yellow;background:black;&quot; align=center | '''27''' || style=&quot;color:yellow;background:black;&quot; align=center | '''28''' || I2C clock || || || ||<br /> |-<br /> | gpio132 || SNVS_TAMPER4__GPIO5_IO04 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''29''' || style=&quot;color:yellow;background:black;&quot; align=center | '''30''' || '''GND''' || || || || <br /> |-<br /> | || || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''31''' || style=&quot;color:yellow;background:black;&quot; align=center | '''32''' || GPIO || || || SNVS_TAMPER0__GPIO5_IO00 || gpio128<br /> |-<br /> | gpio134 || SNVS_TAMPER6__GPIO5_IO06 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''33''' || style=&quot;color:yellow;background:black;&quot; align=center | '''34''' || '''GND''' || || || ||<br /> |-<br /> | gpio135 || SNVS_TAMPER7__GPIO5_IO07 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''35''' || style=&quot;color:yellow;background:black;&quot; align=center | '''36''' || GPIO || || || SNVS_TAMPER3__GPIO5_IO03 || gpio131<br /> |-<br /> | || || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''37''' || style=&quot;color:yellow;background:black;&quot; align=center | '''38''' || GPIO || || || SNVS_TAMPER2__GPIO5_IO02 || gpio130<br /> |-<br /> | || || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''39''' || style=&quot;color:yellow;background:black;&quot; align=center | '''40''' || GPIO / 1-Wire || || || SNVS_TAMPER1__GPIO5_IO01 || gpio129<br /> |}<br /> <br /> ==Tested RPi shields/hats==<br /> * [[Dragino Lora/GPS HAT]]<br /> * [[PiTinfoV1.2 HAT]]<br /> <br /> ==Tips==<br /> ===Bootstrap===<br /> * Put ''Boot0'' jumper to go in [[Bootstrap]] mode<br /> <br /> ===U-Boot===<br /> * Use OPOS6ULDev &quot;User&quot; LED in U-Boot scripts:<br /> ** ON: &lt;pre class=&quot;apf&quot;&gt; BIOS&gt; gpio set 68 &lt;/pre&gt;<br /> ** OFF: &lt;pre class=&quot;apf&quot;&gt; BIOS&gt; gpio clear 68 &lt;/pre&gt;<br /> <br /> ===Linux===<br /> * to activate login in Framebuffer console, please uncomment ''/etc/inittab'' line 35 this way:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # Set up a getty on LCD<br /> tty1::respawn:/sbin/getty 38400 tty1<br /> &lt;/pre&gt;<br /> <br /> =Links=<br /> * RaspberryPi is a registered trademark of RaspberryPi Foundation.<br /> <br /> [[Category:DevelopmentBoards]]<br /> [[Category:Hardware]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=OPOS8MMDev&diff=15082 OPOS8MMDev 2022-06-22T09:27:40Z <p>JulienB: </p> <hr /> <div>[[Category: OPOS8MM]]<br /> <br /> {{Under_Construction}}<br /> <br /> ==Description==<br /> This is the Armadeus System's standard development board/baseboard for the [[OPOS8MM]] module.<br /> <br /> [[Image:OPOS8MM_Dev.png]]<br /> <br /> ==Errata==<br /> <br /> ==Resources==<br /> <br /> * [[Datasheet#OPOS8MMDev | Datasheet and schematics]]<br /> * [http://www.opossom.com/english/products-development_boards-opos8mm_dev.html Product page on Armadeus Systems website]<br /> <br /> ==Feature list==<br /> <br /> {| border=&quot;0&quot; cellpadding=&quot;5&quot; cellspacing=&quot;5&quot; summary=&quot;Hardware Add-Ons by functionnalities&quot;<br /> |----------------<br /> |- style=&quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&quot;<br /> |<br /> <br /> ===Audio===<br /> * [[S/PDIF]]: audio in/out<br /> * [[ALSA]]<br /> <br /> ===Video Out===<br /> * [[LCD]]<br /> * [[BackLight]]<br /> * [[FrameBuffer]]<br /> <br /> ===Video In===<br /> *[[Camera interface]]<br /> ||<br /> ===User Input===<br /> * [[Tslib|Touchscreen]]<br /> <br /> ===Wired communication===<br /> * [[Uart|UART]]<br /> * [[SPI]]<br /> * [[I2C]]<br /> * [[USB Host]] <br /> * [[USB_OTG]]<br /> * [[USB_Gadget]]<br /> * [[CAN_bus_Linux_driver|CAN bus]]<br /> * [[OneWire_GPIO_bus_Master|1-wire]]<br /> <br /> ===Storage===<br /> * [[MultiMediaCard]]<br /> ||<br /> <br /> ===Wireless communication===<br /> * [[Wifi|Wi-Fi usage on Linux]]<br /> * [[Bluetooth|Bluetooth usage on Linux]]<br /> <br /> ===Other===<br /> * [[I.MX6UL_internal_ADC|ADC]]<br /> * [[GPIOlib]]<br /> * [[JTAG]]<br /> <br /> |}<br /> <br /> ==Connectors==<br /> * RPi compatible connector:<br /> {| class=&quot;wikitable&quot; border=&quot;1&quot; cellpadding=&quot;5&quot; summary=&quot;RPi compatible connector of OPOS8MMDev&quot;<br /> |- style=&quot;background:#efefef;&quot;<br /> ! Linux GPIO or device !! i.M6UL Mux !! wiringPi N° !! RPi name !! Function !! JX Pin !! JX Pin !! Function !! RPi name !! wiringPi N° !! i.M6UL Mux !! Linux GPIO or device<br /> |-<br /> | - || || || || '''3.3V''' || style=&quot;color:yellow;background:black;&quot; align=center | '''1''' || style=&quot;color:yellow;background:black;&quot; align=center | '''2''' || '''5V''' || || || || -<br /> |-<br /> | /dev/i2c-1 || UART5_RX_DATA || || SDA1 || I2C data|| style=&quot;color:yellow;background:black;&quot; align=center | '''3''' || style=&quot;color:yellow;background:black;&quot; align=center | '''4''' || '''5V''' || || || || -<br /> |-<br /> | /dev/i2c-1 || UART5_TX_DATA || || SCL1 || I2C clock || style=&quot;color:yellow;background:black;&quot; align=center | '''5''' || style=&quot;color:yellow;background:black;&quot; align=center | '''6''' || '''GND''' || || || || -<br /> |-<br /> | gpio9 || GPIO1_IO09__GPIO1_IO09 || 7 || GPIO7 || GPIO / AIN9 || style=&quot;color:yellow;background:black;&quot; align=center | '''7''' || style=&quot;color:yellow;background:black;&quot; align=center | '''8''' || UART Tx || TxD || || ||/dev/ttymxc1<br /> |-<br /> | || || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''9''' || style=&quot;color:yellow;background:black;&quot; align=center | '''10''' || UART Rx || RxD || || || /dev/ttymxc1<br /> |-<br /> | gpio24 || UART3_TX_DATA__GPIO1_IO24 || 0 || GPIO0 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''11''' || style=&quot;color:yellow;background:black;&quot; align=center | '''12''' || GPIO / AIN8 || GPIO1 || || GPIO1_IO08__GPIO1_IO08 || gpio8<br /> |-<br /> | gpio25 || UART3_RX_DATA__GPIO1_IO25 || || GPIO2 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''13''' || style=&quot;color:yellow;background:black;&quot; align=center | '''14''' || '''GND''' || || || || <br /> |-<br /> | gpio96 || NAND_RE_B__GPIO4_IO00 || || GPIO3 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''15''' || style=&quot;color:yellow;background:black;&quot; align=center | '''16''' || GPIO || GPIO4 || 4 || UART1_CTS_B__GPIO1_IO18 || gpio18<br /> |-<br /> | || || || || '''3,3V''' || style=&quot;color:yellow;background:black;&quot; align=center | '''17''' || style=&quot;color:yellow;background:black;&quot; align=center | '''18''' || GPIO || GPIO5 || 5 || UART1_RTS_B__GPIO1_IO19 || gpio19<br /> |-<br /> | || || || || SPI MOSI || style=&quot;color:yellow;background:black;&quot; align=center | '''19''' || style=&quot;color:yellow;background:black;&quot; align=center | '''20''' || '''GND''' || || || || <br /> |-<br /> | || || || || SPI MISO || style=&quot;color:yellow;background:black;&quot; align=center | '''21''' || style=&quot;color:yellow;background:black;&quot; align=center | '''22''' || GPIO || GPIO6 || 6 || NAND_WE_B__GPIO4_IO01 || gpio97 <br /> |-<br /> | || || || || SPI CLK || style=&quot;color:yellow;background:black;&quot; align=center | '''23''' || style=&quot;color:yellow;background:black;&quot; align=center | '''24''' || SPI_CS0 || || || ||<br /> |-<br /> | || || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''25''' || style=&quot;color:yellow;background:black;&quot; align=center | '''26''' || SPI_CS1 || || || ||<br /> |-<br /> | || || || || I2C Data || style=&quot;color:yellow;background:black;&quot; align=center | '''27''' || style=&quot;color:yellow;background:black;&quot; align=center | '''28''' || I2C clock || || || ||<br /> |-<br /> | gpio132 || SNVS_TAMPER4__GPIO5_IO04 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''29''' || style=&quot;color:yellow;background:black;&quot; align=center | '''30''' || '''GND''' || || || || <br /> |-<br /> | || || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''31''' || style=&quot;color:yellow;background:black;&quot; align=center | '''32''' || GPIO || || || SNVS_TAMPER0__GPIO5_IO00 || gpio128<br /> |-<br /> | gpio134 || SNVS_TAMPER6__GPIO5_IO06 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''33''' || style=&quot;color:yellow;background:black;&quot; align=center | '''34''' || '''GND''' || || || ||<br /> |-<br /> | gpio135 || SNVS_TAMPER7__GPIO5_IO07 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''35''' || style=&quot;color:yellow;background:black;&quot; align=center | '''36''' || GPIO || || || SNVS_TAMPER3__GPIO5_IO03 || gpio131<br /> |-<br /> | || || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''37''' || style=&quot;color:yellow;background:black;&quot; align=center | '''38''' || GPIO || || || SNVS_TAMPER2__GPIO5_IO02 || gpio130<br /> |-<br /> | || || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''39''' || style=&quot;color:yellow;background:black;&quot; align=center | '''40''' || GPIO / 1-Wire || || || SNVS_TAMPER1__GPIO5_IO01 || gpio129<br /> |}<br /> <br /> ==Tested RPi shields/hats==<br /> * [[Dragino Lora/GPS HAT]]<br /> * [[PiTinfoV1.2 HAT]]<br /> <br /> ==Tips==<br /> ===Bootstrap===<br /> * Put ''Boot0'' jumper to go in [[Bootstrap]] mode<br /> <br /> ===U-Boot===<br /> * Use OPOS6ULDev &quot;User&quot; LED in U-Boot scripts:<br /> ** ON: &lt;pre class=&quot;apf&quot;&gt; BIOS&gt; gpio set 68 &lt;/pre&gt;<br /> ** OFF: &lt;pre class=&quot;apf&quot;&gt; BIOS&gt; gpio clear 68 &lt;/pre&gt;<br /> <br /> ===Linux===<br /> * to activate login in Framebuffer console, please uncomment ''/etc/inittab'' line 35 this way:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # Set up a getty on LCD<br /> tty1::respawn:/sbin/getty 38400 tty1<br /> &lt;/pre&gt;<br /> <br /> =Links=<br /> * RaspberryPi is a registered trademark of RaspberryPi Foundation.<br /> <br /> [[Category:DevelopmentBoards]]<br /> [[Category:Hardware]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=OPOS8MMDev&diff=15081 OPOS8MMDev 2022-06-22T09:27:13Z <p>JulienB: Created page with &quot;Category: OPOS8MM ==Description== This is the Armadeus System's standard development board/baseboard for the OPOS8MM module. Image:OPOS8MM_Dev.png ==Errata== =...&quot;</p> <hr /> <div>[[Category: OPOS8MM]]<br /> <br /> ==Description==<br /> This is the Armadeus System's standard development board/baseboard for the [[OPOS8MM]] module.<br /> <br /> [[Image:OPOS8MM_Dev.png]]<br /> <br /> ==Errata==<br /> <br /> ==Resources==<br /> <br /> * [[Datasheet#OPOS8MMDev | Datasheet and schematics]]<br /> * [http://www.opossom.com/english/products-development_boards-opos8mm_dev.html Product page on Armadeus Systems website]<br /> <br /> ==Feature list==<br /> <br /> {| border=&quot;0&quot; cellpadding=&quot;5&quot; cellspacing=&quot;5&quot; summary=&quot;Hardware Add-Ons by functionnalities&quot;<br /> |----------------<br /> |- style=&quot;background:#f4f4f4; color:black; -moz-border-radius:18px;&quot;<br /> |<br /> <br /> ===Audio===<br /> * [[S/PDIF]]: audio in/out<br /> * [[ALSA]]<br /> <br /> ===Video Out===<br /> * [[LCD]]<br /> * [[BackLight]]<br /> * [[FrameBuffer]]<br /> <br /> ===Video In===<br /> *[[Camera interface]]<br /> ||<br /> ===User Input===<br /> * [[Tslib|Touchscreen]]<br /> <br /> ===Wired communication===<br /> * [[Uart|UART]]<br /> * [[SPI]]<br /> * [[I2C]]<br /> * [[USB Host]] <br /> * [[USB_OTG]]<br /> * [[USB_Gadget]]<br /> * [[CAN_bus_Linux_driver|CAN bus]]<br /> * [[OneWire_GPIO_bus_Master|1-wire]]<br /> <br /> ===Storage===<br /> * [[MultiMediaCard]]<br /> ||<br /> <br /> ===Wireless communication===<br /> * [[Wifi|Wi-Fi usage on Linux]]<br /> * [[Bluetooth|Bluetooth usage on Linux]]<br /> <br /> ===Other===<br /> * [[I.MX6UL_internal_ADC|ADC]]<br /> * [[GPIOlib]]<br /> * [[JTAG]]<br /> <br /> |}<br /> <br /> ==Connectors==<br /> * RPi compatible connector:<br /> {| class=&quot;wikitable&quot; border=&quot;1&quot; cellpadding=&quot;5&quot; summary=&quot;RPi compatible connector of OPOS8MMDev&quot;<br /> |- style=&quot;background:#efefef;&quot;<br /> ! Linux GPIO or device !! i.M6UL Mux !! wiringPi N° !! RPi name !! Function !! JX Pin !! JX Pin !! Function !! RPi name !! wiringPi N° !! i.M6UL Mux !! Linux GPIO or device<br /> |-<br /> | - || || || || '''3.3V''' || style=&quot;color:yellow;background:black;&quot; align=center | '''1''' || style=&quot;color:yellow;background:black;&quot; align=center | '''2''' || '''5V''' || || || || -<br /> |-<br /> | /dev/i2c-1 || UART5_RX_DATA || || SDA1 || I2C data|| style=&quot;color:yellow;background:black;&quot; align=center | '''3''' || style=&quot;color:yellow;background:black;&quot; align=center | '''4''' || '''5V''' || || || || -<br /> |-<br /> | /dev/i2c-1 || UART5_TX_DATA || || SCL1 || I2C clock || style=&quot;color:yellow;background:black;&quot; align=center | '''5''' || style=&quot;color:yellow;background:black;&quot; align=center | '''6''' || '''GND''' || || || || -<br /> |-<br /> | gpio9 || GPIO1_IO09__GPIO1_IO09 || 7 || GPIO7 || GPIO / AIN9 || style=&quot;color:yellow;background:black;&quot; align=center | '''7''' || style=&quot;color:yellow;background:black;&quot; align=center | '''8''' || UART Tx || TxD || || ||/dev/ttymxc1<br /> |-<br /> | || || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''9''' || style=&quot;color:yellow;background:black;&quot; align=center | '''10''' || UART Rx || RxD || || || /dev/ttymxc1<br /> |-<br /> | gpio24 || UART3_TX_DATA__GPIO1_IO24 || 0 || GPIO0 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''11''' || style=&quot;color:yellow;background:black;&quot; align=center | '''12''' || GPIO / AIN8 || GPIO1 || || GPIO1_IO08__GPIO1_IO08 || gpio8<br /> |-<br /> | gpio25 || UART3_RX_DATA__GPIO1_IO25 || || GPIO2 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''13''' || style=&quot;color:yellow;background:black;&quot; align=center | '''14''' || '''GND''' || || || || <br /> |-<br /> | gpio96 || NAND_RE_B__GPIO4_IO00 || || GPIO3 || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''15''' || style=&quot;color:yellow;background:black;&quot; align=center | '''16''' || GPIO || GPIO4 || 4 || UART1_CTS_B__GPIO1_IO18 || gpio18<br /> |-<br /> | || || || || '''3,3V''' || style=&quot;color:yellow;background:black;&quot; align=center | '''17''' || style=&quot;color:yellow;background:black;&quot; align=center | '''18''' || GPIO || GPIO5 || 5 || UART1_RTS_B__GPIO1_IO19 || gpio19<br /> |-<br /> | || || || || SPI MOSI || style=&quot;color:yellow;background:black;&quot; align=center | '''19''' || style=&quot;color:yellow;background:black;&quot; align=center | '''20''' || '''GND''' || || || || <br /> |-<br /> | || || || || SPI MISO || style=&quot;color:yellow;background:black;&quot; align=center | '''21''' || style=&quot;color:yellow;background:black;&quot; align=center | '''22''' || GPIO || GPIO6 || 6 || NAND_WE_B__GPIO4_IO01 || gpio97 <br /> |-<br /> | || || || || SPI CLK || style=&quot;color:yellow;background:black;&quot; align=center | '''23''' || style=&quot;color:yellow;background:black;&quot; align=center | '''24''' || SPI_CS0 || || || ||<br /> |-<br /> | || || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''25''' || style=&quot;color:yellow;background:black;&quot; align=center | '''26''' || SPI_CS1 || || || ||<br /> |-<br /> | || || || || I2C Data || style=&quot;color:yellow;background:black;&quot; align=center | '''27''' || style=&quot;color:yellow;background:black;&quot; align=center | '''28''' || I2C clock || || || ||<br /> |-<br /> | gpio132 || SNVS_TAMPER4__GPIO5_IO04 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''29''' || style=&quot;color:yellow;background:black;&quot; align=center | '''30''' || '''GND''' || || || || <br /> |-<br /> | || || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''31''' || style=&quot;color:yellow;background:black;&quot; align=center | '''32''' || GPIO || || || SNVS_TAMPER0__GPIO5_IO00 || gpio128<br /> |-<br /> | gpio134 || SNVS_TAMPER6__GPIO5_IO06 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''33''' || style=&quot;color:yellow;background:black;&quot; align=center | '''34''' || '''GND''' || || || ||<br /> |-<br /> | gpio135 || SNVS_TAMPER7__GPIO5_IO07 || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''35''' || style=&quot;color:yellow;background:black;&quot; align=center | '''36''' || GPIO || || || SNVS_TAMPER3__GPIO5_IO03 || gpio131<br /> |-<br /> | || || || || GPIO || style=&quot;color:yellow;background:black;&quot; align=center | '''37''' || style=&quot;color:yellow;background:black;&quot; align=center | '''38''' || GPIO || || || SNVS_TAMPER2__GPIO5_IO02 || gpio130<br /> |-<br /> | || || || || '''GND''' || style=&quot;color:yellow;background:black;&quot; align=center | '''39''' || style=&quot;color:yellow;background:black;&quot; align=center | '''40''' || GPIO / 1-Wire || || || SNVS_TAMPER1__GPIO5_IO01 || gpio129<br /> |}<br /> <br /> ==Tested RPi shields/hats==<br /> * [[Dragino Lora/GPS HAT]]<br /> * [[PiTinfoV1.2 HAT]]<br /> <br /> ==Tips==<br /> ===Bootstrap===<br /> * Put ''Boot0'' jumper to go in [[Bootstrap]] mode<br /> <br /> ===U-Boot===<br /> * Use OPOS6ULDev &quot;User&quot; LED in U-Boot scripts:<br /> ** ON: &lt;pre class=&quot;apf&quot;&gt; BIOS&gt; gpio set 68 &lt;/pre&gt;<br /> ** OFF: &lt;pre class=&quot;apf&quot;&gt; BIOS&gt; gpio clear 68 &lt;/pre&gt;<br /> <br /> ===Linux===<br /> * to activate login in Framebuffer console, please uncomment ''/etc/inittab'' line 35 this way:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # Set up a getty on LCD<br /> tty1::respawn:/sbin/getty 38400 tty1<br /> &lt;/pre&gt;<br /> <br /> =Links=<br /> * RaspberryPi is a registered trademark of RaspberryPi Foundation.<br /> <br /> [[Category:DevelopmentBoards]]<br /> [[Category:Hardware]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=OPOS8MM_PINOUT&diff=15080 OPOS8MM PINOUT 2022-06-22T07:27:25Z <p>JulienB: /* J2 connector */</p> <hr /> <div>[[Category: PINOUT]]<br /> <br /> = J2 connector =<br /> <br /> {| class=&quot;wikitable&quot; style=&quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&quot;<br /> ! Comments !! GPIO !! i.MX8MM pad name !! OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments<br /> |-<br /> || || - || MIPI_DSI_D0_N || DSI_D0_N || 1 || 70 || ECSPI1_MOSI || ECSPI1_MOSI || GPIO5_IO07 || <br /> |-<br /> || || - || MIPI_DSI_D0_P || DSI_D0_P || 2 || 69 || ECSPI1_MISO || ECSPI1_MISO || GPIO5_IO08 || <br /> |-<br /> || || - || MIPI_DSI_D1_N || DSI_D1_N || 3 || 68 || ECSPI1_SCLK || ECSPI1_SCLK || GPIO5_IO06 || <br /> |-<br /> || || - || MIPI_DSI_D1_P || DSI_D1_P || 4 || 67 || ECSPI1_SS0 || ECSPI1_SS0 || GPIO5_IO09 ||<br /> |-<br /> || || - || || GND || 5 || 66 || GND || || ||<br /> |-<br /> || || - || MIPI_DSI_CLK_N || DSI_CLK_N || 6 || 65 || ECSPI2_MOSI || ECSPI2_MOSI || GPIO5_IO11 ||<br /> |-<br /> || || - || MIPI_DSI_CLK_P || DSI_CLK_P || 7 || 64 || ECSPI2_MISO || ECSPI2_MISO || GPIO5_IO12 ||<br /> |-<br /> || || - || || GND || 8 || 63 || ECSPI2_SCLK || ECSPI2_SCLK || GPIO5_IO10 ||<br /> |-<br /> || || - || MIPI_DSI_D2_N || DSI_D2_N || 9 || 62 || ECSPI2_SS0 || ECSPI2_SS0 || GPIO5_IO13 ||<br /> |-<br /> || || - || MIPI_DSI_D2_P || DSI_D2_P || 10 || 61 || GND || || ||<br /> |-<br /> || || - || MIP_DSI_D3_N || DSI_D3_N || 11 || 60 || ECSPI3_MOSI || UART1_TXD || GPIO5_IO23 ||<br /> |-<br /> || || - || MIPI_DSI_D3_P || DSI_D3_P || 12 || 59 || ECSPI3_MISO || UART2_RXD || GPIO5_IO24 ||<br /> |-<br /> || || - || || GND || 13 || 58 || ECSPI3_SCLK || UART1_RXD || GPIO5_IO22 ||<br /> |-<br /> || || - || MIPI_CSI_D0_N || CSI_D0_N || 14 || 57 || ECSPI3_SS0 || UART2_TXD || GPIO5_IO25 ||<br /> |-<br /> || || - || MIPI_CSI_D0_P || CSI_D0_P || 15 || 56 || I2C3_SDA || I2C3_SDA || GPIO5_IO19 ||<br /> |-<br /> || || - || MIPI_CSI_D1_N || CSI_D1_N || 16 || 55 || I2C3_SCL || I2C3_SCL || GPIO5_IO18 ||<br /> |-<br /> || || - || MIPI_CSI_D1_P || CS_D1_P || 17 || 54 || I2C2_SDA || I2C2_SDA || GPIO5_IO17 ||<br /> |-<br /> || || - || || GND || 18 || 53 || I2C2_SCL || I2C2_SCL || GPIO5_IO16 ||<br /> |-<br /> || || - || MIPI_CSI_CLK_P || CSI_CLK_P || 19 || 52 || I2C4_SDA || I2C4_SDA || GPIO5_IO21 ||<br /> |-<br /> || || - || MIPICSI_CLK_N || CSI_CLK_N || 20 || 51 || I2C4_SCL || I2C4_SCL || GPIO5_IO20 ||<br /> |-<br /> || || - || || GND || 21 || 50 || GND || || ||<br /> |-<br /> || || - || MIPI_CSI_D2_N || CSI_D2_N || 22 || 49 || UART3_TXD || UART3_TXD || GPIO5_IO27 ||<br /> |-<br /> || || - || MIPI_CSI_D2_P || CSI_D2_P || 23 || 48 || UART3_RXD || UART3_RXD || GPIO5_IO26 ||<br /> |-<br /> || || - || MIPI_CSI_D3_N || CSI_D3_N || 24 || style=&quot;background: yellow;&quot; | 47 || style=&quot;background: yellow;&quot; | UART4_TXD || style=&quot;background: yellow;&quot; | UART4_TXD || style=&quot;background: yellow;&quot; | GPIO5_IO29 || style=&quot;background: yellow;&quot; rowspan=&quot;2&quot; | Default debug UART in Armadeus BSP.<br /> |-<br /> || || - || MIPI_CSI_D3_P || CSI_D3_P || 25 || style=&quot;background: yellow;&quot; | 46 || style=&quot;background: yellow;&quot; | UART4_RXD || style=&quot;background: yellow;&quot; | UART4_RXD || style=&quot;background: yellow;&quot; | GPIO5_IO28<br /> |-<br /> || || - || || GND || 26 || 45 || GND || || ||<br /> |-<br /> || || - || PCIE_RXN_N || PCIE_RXN_N || 27 || 44 || USB1_DN || USB1_DN || ||<br /> |-<br /> || || - || PCIE_RXN_P || PCIE_RXN_P || 28 || 43 || USB1_DP || USB1_DP || ||<br /> |-<br /> || || - || || GND || 29 || 42 || USB1_ID || USB1_ID || ||<br /> |-<br /> || || - || PCIE_TXN_N || PCIE_TXN_N || 30 || 41 || USB_VBUS || USB{1,2}_VBUS || ||<br /> |-<br /> || || - || PCIE_TXN_P || PCIE_TXN_P || 31 || 40 || GND || || ||<br /> |-<br /> || || - || || GND || 32 || 39 || USB2_DN || USB2_DN || ||<br /> |-<br /> || || - || PCIE_CLK_N || PCIE_CLK_N || 33 || 38 || USB2_DP || USB2_DP || ||<br /> |-<br /> || || - || PCIE_CLK_P || PCIE_CLK_P || 34 || 37 || USB2_ID || USB2_ID || ||<br /> |-<br /> || || - || || GND || 35 || 36 || RTC_VDD || || ||<br /> |-<br /> |}<br /> <br /> = J4 connector =<br /> <br /> {| class=&quot;wikitable&quot; style=&quot;margin-left: auto; margin-right: auto; border: none; text-align:center;&quot;<br /> ! Comments !! GPIO !! i.MX8MM pad name !! OPOS8MM pad name !! Pin !! Pin !! OPOS8MM pad name !! i.MX8MM pad name !! GPIO !! Comments<br /> |-<br /> || || || || VIN || 1 || 70 || VIN || || ||<br /> |-<br /> || || || || VIN || 2 || 69 || VIN || || ||<br /> |-<br /> || || || || VIN || 3 || 68 || VIN || || ||<br /> |-<br /> || || || || VIN || 4 || 67 || VIN || || ||<br /> |-<br /> || || || || VDD_3V3 || 5 || 66 || NVCC_SNVS_1V8 || || ||<br /> |-<br /> || || || ONOFF || ONOFF || 6 || 65 || SYS_RST_B || || ||<br /> |-<br /> || || || || GND || 7 || 64 || GND || || ||<br /> |- style=&quot;background: yellow;&quot;<br /> |rowspan=&quot;2&quot; | Not available on OPOS8MM SoM with Bluetooth chip. || GPIO5_IO00 || SAI3_TXC || UART2_TX || 8 || 63 || UART2_RTS || SAI3_RXD || GPIO4_IO30 || rowspan=&quot;2&quot; | Not available on OPOS8MM SoM with Bluetooth chip.<br /> |- style=&quot;background: yellow;&quot;<br /> || GPIO4_IO31 || SAI3_TXFS || UART2_RX || 9 || 62 || UART2_CTS || SAI3_RXC || GPIO4_IO29<br /> |-<br /> || || GPIO4_IO21 || SAI2_RXFS || UART1_TX || 10 || 61 || GPIO1_15 || GPIO1_15 || GPIO1_15 ||<br /> |-<br /> || || GPIO4_IO22 || SAI2_RXC || UART1_RX || 11 || 60 || GPIO1_14 || GPIO1_14 || GPIO1_14 ||<br /> |-<br /> || || GPIO4_IO23 || SAI2_RXD0 || UART1_RTS || 12 || 59 || GPIO1_13 || GPIO1_13 || GPIO1_13 ||<br /> |-<br /> || || GPIO4_IO24 || SAI2_TXFS || UART1_CTS || 13 || 58 || GPIO1_12 || GPIO1_12 || GPIO1_12 ||<br /> |-<br /> || || GPIO5_IO05 || SPDIF_EXT_CLK || SPDIF_EXT_CLK || 14 || 57 || GPIO1_11 || GPIO1_11 || GPIO1_11 ||<br /> |-<br /> || || GPIO5_IO03 || SPDIF_TX || SPDIF_TX || 15 || 56 || GPIO1_10 || GPIO1_10 || GPIO1_10 ||<br /> |-<br /> || || GPIO5_IO04 || SPDIF_RX || SPDIF_RX || 16 || 55 || GPIO1_09 || GPIO1_09 || GPIO1_09 ||<br /> |-<br /> || || GPIO3_IO24 || SAI5_RXD3 || SAI5_RXD3 || 17 || 54 || GPIO1_08 || GPIO1_08 || GPIO1_08 ||<br /> |-<br /> || || GPIO3_IO23 || SAI5_RXD2 || SAI5_RXD2 || 18 || 53 || GPIO1_07 || GPIO1_07 || GPIO1_07 ||<br /> |-<br /> || || GPIO3_IO22 || SAI5_RXD1 || SAI5_RXD1 || 19 || 52 || GPIO1_06 || GPIO1_06 || GPIO1_06 ||<br /> |-<br /> || || GPIO3_IO21 || SAI5_RXD0 || SAI5_RXD0 || 20 || 51 || GPIO1_05 || GPIO1_05 || GPIO1_05 ||<br /> |-<br /> || || GPIO3_IO20 || SAI5_RXC || SAI5_RXC || 21 || 50 || GPIO1_04 || GPIO1_04 || GPIO1_04 ||<br /> |-<br /> || || GPIO3_IO25 || SAI5_MCLK || SAI5_MCLK || 22 || 49 || GPIO1_01 || GPIO1_01 || GPIO1_01 ||<br /> |-<br /> || || || BOOT_MODE0 || BOOT_MODE0 || 23 || 48 || GPIO1_00 || GPIO1_00 || GPIO1_00 ||<br /> |-<br /> || || GPIO2_IO12 || SD2_CD_B || SD2_CD_B || 24 || 47 || GND || || ||<br /> |-<br /> || || GPIO2_IO15 || SD2_DATA0 || SD2_DATA0 || 25 || 46 || ETH_TXRXM_D || || || <br /> |-<br /> || || GPIO2_IO16 || SD2_DATA1 || SD2_DATA1 || 26 || 45 || ETH_TXRXP_D || || ||<br /> |-<br /> || || GPIO2_IO14 || SD2_CMD || SD2_CMD || 27 || 44 || GND || || ||<br /> |-<br /> || || || || GND || 28 || 43 || ETH_TXRXM_C || || ||<br /> |-<br /> || || GPIO2_IO13 || SD2_CLK || SD2_CLK || 29 || 42 || ETH_TXRXP_C || || ||<br /> |-<br /> || || || || GND || 30 || 41 || GND || || ||<br /> |-<br /> || || GPIO2_IO18 || SD2_DATA3 || SD2_DATA3 || 31 || 40 || ETH_TXRXM_B || || ||<br /> |-<br /> || || GPIO2_IO17 || SD2_DATA2 || SD2_DATA2 || 32 || 39 || ETH_TXRXP_B || || ||<br /> |-<br /> || || || || GND || 33 || 38 || GND || || ||<br /> |-<br /> || || || || ETH_ACTIVITY || 34 || 37 || ETH_TXRXM_A || || ||<br /> |-<br /> || || || || ETH_LINK# || 35 || 36 || ETH_TXRXP_A || || ||<br /> |}</div> JulienB http://www.armadeus.org/wiki/index.php?title=Bugs&diff=15079 Bugs 2022-06-16T14:28:26Z <p>JulienB: /* Old releases */</p> <hr /> <div>==List of known bugs and others problems reported==<br /> * If you want a day by day view on all the '''OPEN''' bugs currently reported, please consult the project repository on SourceForge: <br /> **http://sourceforge.net/tracker/?group_id=122057&amp;atid=692259<br /> * To have the list of bugs &amp; workaround (if any) per Release:<br /> ** [[Releases]]<br /> <br /> == (Very) Old releases ==<br /> * Armadeus release 2.2<br /> * Armadeus release 2.0<br /> <br /> CCache seems to make some troubles for the moment:<br /> During a second buildroot compiling, the compiler does not use the right Linux<br /> headers. This is only visible with packages that needs system dependent headers.<br /> (ex: compile a new buildroot and then do a make menuconfig and select additional package:<br /> ''utils-linux'' and then compile again. ...... this will not work ). <br /> <br /> '''workaround:''' Disable ccache for the moment <br /> <br /> * Armadeus release 1.6<br /> <br /> If project is compiled twice then jffs2 generation of rootfs can fail<br /> <br /> '''workaround:''' do the compilation in a new shell.</div> JulienB http://www.armadeus.org/wiki/index.php?title=Bugs&diff=15078 Bugs 2022-06-16T14:28:10Z <p>JulienB: /* List of known bugs and others problems reported */</p> <hr /> <div>==List of known bugs and others problems reported==<br /> * If you want a day by day view on all the '''OPEN''' bugs currently reported, please consult the project repository on SourceForge: <br /> **http://sourceforge.net/tracker/?group_id=122057&amp;atid=692259<br /> * To have the list of bugs &amp; workaround (if any) per Release:<br /> ** [[Releases]]<br /> <br /> == Old releases ==<br /> * Armadeus release 2.2<br /> * Armadeus release 2.0<br /> <br /> CCache seems to make some troubles for the moment:<br /> During a second buildroot compiling, the compiler does not use the right Linux<br /> headers. This is only visible with packages that needs system dependent headers.<br /> (ex: compile a new buildroot and then do a make menuconfig and select additional package:<br /> ''utils-linux'' and then compile again. ...... this will not work ). <br /> <br /> '''workaround:''' Disable ccache for the moment <br /> <br /> * Armadeus release 1.6<br /> <br /> If project is compiled twice then jffs2 generation of rootfs can fail<br /> <br /> '''workaround:''' do the compilation in a new shell.</div> JulienB http://www.armadeus.org/wiki/index.php?title=Bugs&diff=15077 Bugs 2022-06-16T14:25:56Z <p>JulienB: /* This is a list of known bugs and others problems reported */</p> <hr /> <div>==List of known bugs and others problems reported==<br /> * If you want a day by day view on all the '''OPEN''' bugs currently reported, please consult the project repository on SourceForge: <br /> **http://sourceforge.net/tracker/?group_id=122057&amp;atid=692259<br /> * To have the list of bug per Release:<br /> <br /> == Old releases ==<br /> * Armadeus release 2.2<br /> * Armadeus release 2.0<br /> <br /> CCache seems to make some troubles for the moment:<br /> During a second buildroot compiling, the compiler does not use the right Linux<br /> headers. This is only visible with packages that needs system dependent headers.<br /> (ex: compile a new buildroot and then do a make menuconfig and select additional package:<br /> ''utils-linux'' and then compile again. ...... this will not work ). <br /> <br /> '''workaround:''' Disable ccache for the moment <br /> <br /> * Armadeus release 1.6<br /> <br /> If project is compiled twice then jffs2 generation of rootfs can fail<br /> <br /> '''workaround:''' do the compilation in a new shell.</div> JulienB http://www.armadeus.org/wiki/index.php?title=Bugs&diff=15076 Bugs 2022-06-16T14:24:51Z <p>JulienB: </p> <hr /> <div>==This is a list of known bugs and others problems reported==<br /> * If you want a day by day view on all the bugs currently reported, please consult the project repository on SourceForge: <br /> **http://sourceforge.net/tracker/?group_id=122057&amp;atid=692259<br /> <br /> == Old releases ==<br /> * Armadeus release 2.2<br /> * Armadeus release 2.0<br /> <br /> CCache seems to make some troubles for the moment:<br /> During a second buildroot compiling, the compiler does not use the right Linux<br /> headers. This is only visible with packages that needs system dependent headers.<br /> (ex: compile a new buildroot and then do a make menuconfig and select additional package:<br /> ''utils-linux'' and then compile again. ...... this will not work ). <br /> <br /> '''workaround:''' Disable ccache for the moment <br /> <br /> * Armadeus release 1.6<br /> <br /> If project is compiled twice then jffs2 generation of rootfs can fail<br /> <br /> '''workaround:''' do the compilation in a new shell.</div> JulienB http://www.armadeus.org/wiki/index.php?title=RS-485&diff=15075 RS-485 2022-04-01T16:41:54Z <p>JulienB: /* Links */</p> <hr /> <div>Informations and HOWTOs for ArmadeuS RS-485 support.<br /> <br /> RS-485 mostly used in half duplex operation mode, and uses a differential balanced line over twisted pair. RS-485 drivers need to be put in transmit mode explicitly by asserting a signal to the driver. This allows RS-485 to implement linear topologies using only two wires, and it can span relatively large distances (up to 1,200m @ 100kbit/s).<br /> <br /> Before the RS-485 related parts, please have a look on: [[Serial ports usage on Linux]]<br /> <br /> Author: [[Users:JanosA]]<br /> <br /> == Supported Board and Software versions ==<br /> * Use the latest Armadeus GIT/SF repository or the latest stable release.<br /> * Currently tested only on the [[APF28]] (i.MX28) board with Linux kernel 2.6.35 (patch 462) and 4.9 (patch 703). If device tree is used, you need to activate rts/cts on UART used for RS-485.<br /> * Busybox ''stty'' command requires a patch included in Armadeus BSP, to handle specifics RS-485 parameters handling.<br /> <br /> == Changing port parameters ==<br /> * Setup APF28 serial port for RS-485 communication:<br /> &lt;pre class=apf&gt;<br /> # export SERIAL_DEV=/dev/ttySP0<br /> # stty -F $SERIAL_DEV 9600<br /> # stty -F $SERIAL_DEV raw<br /> # stty -F $SERIAL_DEV -echo -echoe -echok<br /> # stty -F $SERIAL_DEV rs485<br /> &lt;/pre&gt;<br /> <br /> * Set extra delays (if needed) for TXEN/RTS signaling before and after the transmitted packet (in microseconds):<br /> &lt;pre class=apf&gt;<br /> # stty -F $SERIAL_DEV rs485delaybefore 100<br /> # stty -F $SERIAL_DEV rs485delayafter 100<br /> &lt;/pre&gt;<br /> <br /> * To get current RS-485 parameters: (if the serial port supports the RS-485 options, you will see previous rs485 parameters values)<br /> &lt;pre class=apf&gt;<br /> # stty -F /dev/ttySP0<br /> speed 9600 baud; line = 0;<br /> intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = &lt;undef&gt;;<br /> eol2 = &lt;undef&gt;; swtch = &lt;undef&gt;; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;<br /> werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;<br /> -brkint -imaxbel<br /> rs485 -rs485rtsonsend -rs485rtsaftersend -rs485rxduringtx<br /> rs485delaybefore = 100; rs485delayafter = 100; rs485delaylastchartx = 1250;<br /> &lt;/pre&gt;<br /> Please note:<br /> * You can't set the &quot;rs485delaylastchartx&quot; parameter, it's calculated automatically from the baudrate.<br /> Special notes for the APF28/i.MX28 ''mxs-auart'' driver:<br /> * All delays are in microseconds.<br /> * The &quot;rs485delaylastchartx&quot; parameter is not used in DMA mode.<br /> * The parameters: &quot;rs485rtsonsend&quot; &quot;rs485rtsaftersend&quot; &quot;rs485rxduringtx&quot; are not used. (Only used by atmel_serial.c and crisv10.c drivers)<br /> * If the RS-485 mode is turned on, it will override (turn off) the RTS/CTS hardware flow settings of the UART, whatever is configured.<br /> <br /> == How to use it from C code ==<br /> * The RS-485 mode can also be turned on with ioctl calls from C code, here is the example:<br /> &lt;source lang=&quot;C&quot;&gt;<br /> #include &lt;stdio.h&gt;<br /> #include &lt;fcntl.h&gt;<br /> #include &lt;linux/ioctl.h&gt;<br /> #include &lt;linux/serial.h&gt;<br /> #include &lt;asm-generic/ioctls.h&gt; /* TIOCGRS485 + TIOCSRS485 ioctl definitions */<br /> <br /> int main(void) {<br /> struct serial_rs485 rs485conf;<br /> <br /> int fd = open (&quot;/dev/ttySP0&quot;, O_RDWR);<br /> if (fd &lt; 0) {<br /> printf(&quot;Error: Can't open: /dev/ttySP0\n&quot;);<br /> }<br /> <br /> <br /> /* Don't forget to read first the current state of the RS-485 options with ioctl.<br /> If You don't do this, You will destroy the rs485conf.delay_rts_last_char_tx<br /> parameter which is automatically calculated by the driver when You opens the<br /> port device. */<br /> if (ioctl (fd, TIOCGRS485, &amp;rs485conf) &lt; 0) {<br /> printf(&quot;Error: TIOCGRS485 ioctl not supported.\n&quot;);<br /> }<br /> <br /> /* Enable RS-485 mode: */<br /> rs485conf.flags |= SER_RS485_ENABLED;<br /> <br /> /* Set rts/txen delay before send, if needed: (in microseconds) */<br /> rs485conf.delay_rts_before_send = 0;<br /> <br /> /* Set rts/txen delay after send, if needed: (in microseconds) */<br /> rs485conf.delay_rts_after_send = 0;<br /> <br /> if (ioctl (fd, TIOCSRS485, &amp;rs485conf) &lt; 0) {<br /> printf(&quot;Error: TIOCSRS485 ioctl not supported.\n&quot;);<br /> }<br /> <br /> fcntl(fd, F_SETFL, 0);<br /> int n = write(fd, &quot;ABC\r\n&quot;, 5);<br /> if (n &lt; 0) {<br /> /* Error handling */<br /> }<br /> <br /> if (close (fd) &lt; 0) {<br /> printf(&quot;Error: Can't close: /dev/ttySP0\n&quot;);<br /> }<br /> }<br /> &lt;/source&gt;<br /> <br /> == Hardware Notes ==<br /> * The RS-485 Transmit Enable (TXEN) output will be the RTS pin of the UART. <br /> * The TXEN/RTS output is _active low_, it must be inverted to use it with the popular RS-485 transceiver ICs. On kernel with device tree, this can be done with ''rs485-rts-active-high'' option when declaring UART config.<br /> * When U-Boot runs and the board start to boot, the RTS pin works as an input, so please add a pull-up resistor to this pin, before the inverter, to prevent RS-485 bus lockups.<br /> <br /> ==Links==<br /> * Some C example code to use Modbus RTU through RS485: https://github.com/artemysfr/embedded-tools<br /> * De-asserting RTS fastest as possible is a well known problem on every platforms:<br /> ** https://blog.savoirfairelinux.com/en-ca/2013/adding-rs-485-support-to-the-beaglebone-with-short-turnaround-delay/<br /> <br /> [[Category:Serial ports]]<br /> [[Category:RS485]]<br /> [[Category:Modbus]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=PWM&diff=15057 PWM 2022-02-10T11:30:35Z <p>JulienB: /* Usage */</p> <hr /> <div>On this page, you will find usefull informations to configure and use the Pulse Width Modulation (PWM) capabilities of your APF boards.<br /> <br /> The i.MX processors are able to drive 2 types of PWM signals:<br /> * one that is linked to the LCD controller and allows controlling the [[BackLight | LCD backlight]] (fixed frequency)<br /> * the other can be used to generate a PWM signal in several mode:<br /> ** audio playback<br /> ** real PWM<br /> <br /> ==Hardware==<br /> PWM pin detail for each APF boards can be found [[Hardware|here]] (under 'BaseBoards' section).<br /> On [[APF28Dev]] for example, PWM4 is on connector J10 at pin 26.<br /> <br /> == Linux driver installation ==<br /> i.MX PWM driver is installed by default in standard Armadeus rootfs.<br /> {{Note|On [[APF51Dev]], as PWM outputs/pins are multiplexed and used as user LED and button by default, you may have to define APF51DEV_USE_LED_AS_PWM or APF51DEV_USE_SWITCH_AS_PWM in Linux sources (''arch/arm/mach-mx5/apf51dev-baseboard.c''), rebuild and reflash the Linux kernel.}}<br /> <br /> {{Note|On [[APF6Dev]], as PWM outputs is by default used for LCD's backlight control, you may have to modify APF6Dev device tree in Linux sources (''arch/arm/boot/dts/imx6qdl-apf6dev.dtsi''), rebuild and reflash the imx6q-apf6dev.dtb file.}}<br /> <br /> == Usage ==<br /> * Load the driver ([[APF9328]], [[APF27]], [[APF51]]):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # modprobe imx-pwm<br /> i.MX PWM driver v0.81<br /> imx-pwm imx-pwm.0: initialized<br /> &lt;/pre&gt;<br /> * On [[APF28]] with 2.6.35 kernel and on [[APF6]] &amp; [[OPOS6UL]], the PWM driver is builtin so no need to load it before use.<br /> * For the one who plan to use sound, ''/dev/pwm0'' device file should be automatically created.<br /> <br /> === PWM Mode ===<br /> <br /> {{Note|The PWM has a resolution of 1uS}}<br /> <br /> After driver loading, you have access to ''/sys/class/pwm/...'' functionalities:<br /> <br /> {| border=&quot;1&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot; summary=&quot;PWM usage depending on kernel version&quot; class=&quot;wikitable&quot;<br /> |- style=&quot;background:#efefef;&quot; align=&quot;center&quot;<br /> ! 2.6 kernels || 3.x+ kernels<br /> |-----<br /> <br /> |&lt;pre class=&quot;apf&quot;&gt;<br /> export PWM=pwm0 (on APF9328/APF27/APF51)<br /> export PWM=pwm4 (on APF28Dev)<br /> &lt;/pre&gt;<br /> * to change frequency (for example 500 Hz):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 500 &gt; /sys/class/pwm/$PWM/frequency<br /> &lt;/pre&gt;<br /> * if you prefer working with periods (for example 100us):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 100 &gt; /sys/class/pwm/$PWM/period<br /> &lt;/pre&gt;<br /> * to change duty cycle (for example 50.0%)<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 500 &gt; /sys/class/pwm/$PWM/duty<br /> &lt;/pre&gt;<br /> * to activate PWM:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 1 &gt; /sys/class/pwm/$PWM/active<br /> &lt;/pre&gt;<br /> * to de-activate PWM:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 0 &gt; /sys/class/pwm/$PWM/active<br /> &lt;/pre&gt;<br /> <br /> ||&lt;pre class=&quot;apf&quot;&gt;<br /> export PWM_CHIP=pwmchip2 (on APF6Dev)<br /> export PWM_CHIP=pwmchip0 (on APF9328Dev/APF27Dev/APF51Dev/APF28Dev/OPOS6UL)<br /> <br /> export PWM=0 (on APF9328Dev/APF27Dev/APF51Dev/APF6Dev/OPOS6UL)<br /> export PWM=4 (on APF28Dev)<br /> &lt;/pre&gt;<br /> * declare the PWM we will use:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo ${PWM} &gt; /sys/class/pwm/${PWM_CHIP}/export<br /> &lt;/pre&gt;<br /> * to have a 100uS period:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 100000 &gt; /sys/class/pwm/${PWM_CHIP}/pwm${PWM}/period<br /> &lt;/pre&gt;<br /> * to change duty cycle (for example 50% = 50us of 100us period)<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 50000 &gt; /sys/class/pwm/${PWM_CHIP}/pwm${PWM}/duty_cycle<br /> &lt;/pre&gt;<br /> * to activate PWM:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 1 &gt; /sys/class/pwm/${PWM_CHIP}/pwm${PWM}/enable<br /> &lt;/pre&gt;<br /> * to de-activate PWM:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # echo 0 &gt; /sys/class/pwm/${PWM_CHIP}/pwm${PWM}/enable<br /> &lt;/pre&gt;<br /> <br /> |}<br /> <br /> ==== Bash test script (2.6 kernels) ====<br /> * A Bash test script is available given below. Just enter the desired frequency and duty cycle. <br /> &lt;source lang=&quot;Bash&quot;&gt;<br /> #!/bin/sh<br /> #<br /> # script to command imx pwm <br /> # usage : pwm_imx frequency duty <br /> #<br /> <br /> if [ $# -lt 2 ] <br /> then<br /> echo &quot;Provide two arguments to this script !&quot;<br /> echo &quot;pwm_imx frequency dutycycle&quot;<br /> exit 1<br /> fi<br /> <br /> SYS_DIR=&quot;/sys/class/pwm/pwm0/&quot;<br /> FREQUENCY=$1<br /> DUTY=$2<br /> <br /> DUTY=`(echo $DUTY | awk '{ print $1*10}')`<br /> <br /> if [ ! -d &quot;$SYS_DIR&quot; ]; then<br /> echo &quot;Can't find /sys/ interface for PWM&quot;<br /> exit 1<br /> fi<br /> <br /> echo &quot;Starting PWM&quot;<br /> echo 1 &gt; $SYS_DIR/active<br /> <br /> #SET FREQUENCY<br /> echo $FREQUENCY &gt; $SYS_DIR/frequency<br /> echo &quot;Setting PWM to $FREQUENCY Hz&quot;<br /> <br /> #SET DUTY CYCLE<br /> echo $DUTY &gt; $SYS_DIR/duty<br /> echo &quot;Setting DUTY to $2 %&quot;<br /> <br /> exit 0<br /> <br /> &lt;/source&gt;<br /> <br /> * Other test script may be found in ''target/test/test_pwm.sh'' of your armadeus BSP<br /> <br /> === Audio Mode ===<br /> Audio playback mode is working since v0.5 of PWM driver (thanks to [[User:SebastienR|SebastienR]]).<br /> You can play 8, 16 &amp; 32 KHz 8bit linear RAW sound. It's recommended to play 8kHz one, as they are using less CPU resources.<br /> To convert a sound to the right format we recommend to use SoX (on Linux).<br /> For example:<br /> [host]$ sox /usr/share/sounds/KDE_Chimes_1.ogg -r 8192 -b -u -c 1 Chimes.raw<br /> -r -&gt; sampling rate<br /> -b -&gt; byte/8bit signal<br /> -u -&gt; linear /not compressed<br /> -c 1 -&gt; Mono / 1 channel<br /> <br /> Then you can test it using ''target/linux/modules/pwm/test/testplaymode'', which can be compiled that way:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ make shell_env<br /> $ . armadeus_env.sh<br /> $ export PATH=$PATH:$ARMADEUS_TOOLCHAIN_PATH<br /> $ make -C target/linux/modules/pwm/test/<br /> $ cp target/linux/modules/pwm/test/testplaymode /tftpboot/<br /> $ cp target/linux/modules/pwm/test/KDE_Startup_2.raw /tftpboot/<br /> &lt;/pre&gt;<br /> on target do:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # testplaymode<br /> &lt;/pre&gt;<br /> or<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # testplaymode KDE_Startup_2.raw<br /> &lt;/pre&gt;<br /> <br /> ==Going further==<br /> If you need more than one PWM at a time, you can use the APF's FPGA with [[MotionSystem|the following project]].<br /> <br /> == Links ==<br /> * [http://sox.sourceforge.net/Docs/FAQ SoX, sound format converter]<br /> * http://en.wikipedia.org/wiki/Pulse-width_modulation<br /> <br /> [[Category:Linux_drivers]]<br /> [[Category:ExternalDeviceControl]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=Category:EMMC&diff=15056 Category:EMMC 2022-02-02T17:12:34Z <p>JulienB: Created page with &quot;Pages related to eMMC of Armadeus SOMs&quot;</p> <hr /> <div>Pages related to eMMC of Armadeus SOMs</div> JulienB http://www.armadeus.org/wiki/index.php?title=Network_File_System_configuration&diff=15052 Network File System configuration 2022-02-01T11:17:36Z <p>JulienB: /* Troubleshooting */</p> <hr /> <div>==Introduction==<br /> <br /> On this page, you will find usefull informations to configure NFS ([[wikipedia:Network_File_System_(protocol)|Network File System]]) on your Host and your Target.<br /> <br /> ==NFS server on your development Host==<br /> <br /> ===Installation===<br /> * On Fedora, NFS is part of your distribution so you normally don't need to install it.<br /> * On Ubuntu/Kubuntu:<br /> $ sudo apt-get install nfs-kernel-server<br /> * On OpenSUSE:<br /> $ sudo zypper install yast2-nfs-server<br /> * On Gentoo: <br /> # emerge -av nfs-utils<br /> <br /> You can also take a look at the [https://wiki.gentoo.org/wiki/Nfs-utils gentoo wiki]<br /> ===Configuration===<br /> ====/etc/exports====<br /> * You have to declare the directory where you're going to store the files you want to share accross the network. For that you have to modify the '''/etc/exports''' file with (for example):<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ sudo vim /etc/exports<br /> &lt;/pre&gt;<br /> and add it (at the end of the file):<br /> &lt;source lang=&quot;bash&quot;&gt;<br /> ...<br /> # Directory for Armadeus:<br /> /local/export 192.168.0.0/255.255.255.0(ro,no_root_squash,sync)<br /> ...<br /> &lt;/source&gt;<br /> :In that case your Host will authorize all client from the subnet 192.168.*.* to access ''/local/export'' in '''read only''' mode. If you want read/write access from your APF to your exported dir, then replace ''ro'' with ''rw''.&lt;br&gt;<br /> * In order to use the same folder through TFTP and NFS, using the default U-Boot scripts for example, it recommended to export your /tftpboot folder as well:<br /> &lt;source lang=&quot;bash&quot;&gt;<br /> ...<br /> # Directory for Armadeus:<br /> /local/export 192.168.0.0/255.255.255.0(ro,no_root_squash,sync)<br /> /tftpboot 192.168.0.0/255.255.255.0(ro,no_root_squash,sync)<br /> ...<br /> &lt;/source&gt;<br /> * If not existing, create your export directory (for example):<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ sudo mkdir -p /local/export<br /> $ sudo chown -R $USER:$GROUP /local/export/<br /> &lt;/pre&gt;<br /> <br /> ====/etc/hosts====<br /> * You have to declare your APF/OPOS board in the PC hosts list, to fully support NFS access from U-Boot. For such purpose you have to update the ''/etc/hosts'' file with your preferred editor (as root):<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ sudo vim /etc/hosts<br /> &lt;/pre&gt;<br /> and add the IP address of your board after the localhost definition for example :<br /> &lt;source lang=&quot;bash&quot;&gt;<br /> 127.0.0.1 localhost<br /> 192.168.0.10 apf<br /> ...<br /> &lt;/source&gt;<br /> <br /> ====Restart of NFS server====<br /> {| border=&quot;1&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; summary=&quot;Restart of NFS server depending on your distribution&quot;<br /> |- style=&quot;background:#efefef;&quot;<br /> ! '''On Fedora''' || '''On Ubuntu/Kubuntu/debian''' || '''On OpenSUSE''' || '''On Gentoo'''<br /> |-<br /> <br /> |&lt;pre class=&quot;host&quot;&gt;<br /> # /sbin/service nfs restart<br /> &lt;/pre&gt;<br /> Next time you boot, you can check your NFS server status with:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> # /sbin/service nfs status<br /> &lt;/pre&gt;<br /> and if not started then:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> # /sbin/service nfs start<br /> &lt;/pre&gt;<br /> <br /> || &lt;pre class=&quot;host&quot;&gt;<br /> $ sudo /etc/init.d/nfs-kernel-server restart<br /> &lt;/pre&gt;<br /> Next time you boot, you can check your NFS server status with:<br /> ''System Settings-&gt;System services''<br /> || &lt;pre class=&quot;host&quot;&gt;<br /> # /etc/init.d/nfsserver restart<br /> &lt;/pre&gt;<br /> <br /> || &lt;pre class=&quot;host&quot;&gt;<br /> # /etc/init.d/nfs restart<br /> &lt;/pre&gt;<br /> |}<br /> <br /> ==NFS usage on your Armadeus board==<br /> <br /> ===Mount the NFS partition manually ===<br /> * check if mount point is existing (for example we will take ''/mnt/nfs''):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # ls /mnt<br /> &lt;/pre&gt;<br /> * if not existing, create the mount point:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir -p /mnt/nfs<br /> &lt;/pre&gt;<br /> * mount it (for example):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mount -t nfs 192.168.0.2:/local/export /mnt/nfs<br /> &lt;/pre&gt;<br /> Here 192.168.0.2 is your Host IP address and ''/local/export'' the name of your Host directory you want to mount.<br /> <br /> {{Note| On some nfs server (for exemple with debian wheezy) there is a warning when we mount nfs partition. But the filesystem is mounted :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mount /mnt/nfs/<br /> svc: failed to register lockdv1 RPC service (errno 97).<br /> &lt;/pre&gt;<br /> }}<br /> <br /> ===Mount the NFS partition automatically at each boot from FLASH===<br /> <br /> * login to your Armadeus board as root<br /> * open the '''/etc/fstab''' file and add this line:<br /> &lt;host-ip&gt;:/&lt;path-to-shared-folder&gt; /mnt/&lt;path-to-mount-folder&gt; nfs hard,intr,rsize=8192,wsize=8192 0 0<br /> example:<br /> 192.168.0.2:/local/export /mnt/nfs nfs hard,intr,rsize=8192,wsize=8192 0 0<br /> * check your modification:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mount /mnt/nfs<br /> &lt;/pre&gt;<br /> * reboot your board<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # reboot<br /> &lt;/pre&gt;<br /> * and enjoy the result<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # df<br /> # ls /mnt/nfs<br /> &lt;/pre&gt;<br /> <br /> When you have a problem, verify that the NFS server is running on the host:<br /> {| border=&quot;1&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; summary=&quot;Status of NFS server depending on your distribution&quot;<br /> |- style=&quot;background:#efefef;&quot;<br /> ! '''On Fedora''' || '''On Ubuntu/Kubuntu/debian''' || '''On OpenSUSE''' || '''On Gentoo'''<br /> |-<br /> <br /> | &lt;pre class=&quot;host&quot;&gt;<br /> $ /sbin/service nfs status<br /> &lt;/pre&gt;<br /> <br /> ||&lt;pre class=&quot;host&quot;&gt;<br /> $ /etc/init.d/nfs-kernel-server status<br /> &lt;/pre&gt;<br /> || <br /> <br /> || <br /> |}<br /> <br /> ===Boot from NFS===<br /> This boot procedure is usefull to test a modified rootfs and/or a linux kernel keeping safe the original flash memory content of your board.<br /> * on your Host, expand generated rootfs image to your NFS export dir (for example if your NFS export dir is ''/tftpboot'' on your Host) and you want to boot on it using the U-Boot script nfsboot:<br /> &lt;pre class=host&gt;<br /> $ make shell_env<br /> $ source armadeus_env.sh<br /> $ sudo mkdir -p /tftpboot/$ARMADEUS_BOARD_NAME-root/boot<br /> $ sudo tar xvf $ARMADEUS_ROOTFS_TAR -C /tftpboot/$ARMADEUS_BOARD_NAME-root<br /> &lt;/pre&gt;<br /> * The copy of the Linux kernel to the NFS ''/boot'' folder, makes possible to also download it with NFS when booting the board:<br /> &lt;pre class=host&gt;<br /> $ sudo cp $ARMADEUS_BINARIES/$ARMADEUS_BOARD_NAME-linux.bin /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/<br /> &lt;/pre&gt;<br /> * With recent (3.10+) kernels, you also have to copy the Device Tree blobs:<br /> &lt;pre class=host&gt;<br /> $ sudo mkdir -p /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/dtbs<br /> $ sudo cp $ARMADEUS_BINARIES/*.dtb /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/dtbs/<br /> &lt;/pre&gt;<br /> <br /> * On your board, in U-Boot, check if the ''rootpath'' envt variable is set accordingly:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; printenv rootpath<br /> &lt;/pre&gt;<br /> * If not, then set it (by default U-boot is configured to use the following path ''/tftpboot/apfXXXX-root'') where apfXXXX may be apf9328, apf27, apf28, apf51, apf6:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; setenv rootpath /tftpboot/${board_name}-root<br /> &lt;/pre&gt;<br /> * save it:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; saveenv<br /> &lt;/pre&gt;<br /> * then boot with:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; run nfsboot<br /> &lt;/pre&gt;<br /> <br /> ===Summary of the required Packages:===<br /> * portmap (Buildroot)<br /> * nfs (busybox)<br /> * nfs support (Linux, activated by default in Armadeus configuration)<br /> <br /> ==Troubleshooting==<br /> <br /> ===RPC: Program not registered===<br /> * If ''nfsd'' and ''mountd'' daemons are not running on your Host, then you will get a message like:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> mount: RPC: Program not registered<br /> &lt;/pre&gt;<br /> * In that case, restart the NFS service on your Host (see [[Network_File_System_configuration#Restart_of_NFS_server|above]]).<br /> <br /> ===Portmap/RPCbind===<br /> * To successfully mount a NFS drive, ''portmap''/''rpcbind'' daemon should be running on your APF/OPOS, if not, system will hang during some minutes when you launch the mount !!<br /> To check if ''portmap''/''rpcbind'' is running, look at the running processes:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # ps faux<br /> &lt;/pre&gt;<br /> If ''portmap/rpcbind'' is not listed, then launch it manually or install it:<br /> &lt;pre class=&quot;apf&quot;<br /> # /etc/init.d/S13portmap<br /> &lt;/pre&gt;<br /> * Note: ''portmap'' is obsolete since 2017<br /> <br /> ===Connection refused===<br /> * If you get this on your APF when trying to mount:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> mount: mounting 192.168.0.2:/local/export on /mnt/nfs/ failed: Connection refused<br /> &lt;/pre&gt;<br /> * then your kernel might need some extra options:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> mount -o port=2049,nolock,proto=tcp 192.168.0.2:/local/export /mnt/nfs/<br /> &lt;/pre&gt;<br /> <br /> ===Kernel debug===<br /> * If none of the above workarounds was successful -&gt; no luck ! :-) You can still activate NFS debugging by recompiling your kernel with CONFIG_SUNRPC_DEBUG options and use ''setenv extrabootargs nfsrootdebug'' in U-Boot. And then you dig...<br /> <br /> ==NFS Server under Windows==<br /> For those who want to use the NFS service on Windows, a small and FREE NFS server is available [http://www.freedownloadscenter.com/Utilities/Misc__Utilities/nfsAxe.html here].<br /> <br /> ==Links==<br /> * http://www.denx.de/wiki/view/DULG/SystemSetup#Section_4.8.<br /> <br /> [[Category:Network]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=Network_File_System_configuration&diff=15051 Network File System configuration 2022-02-01T10:57:54Z <p>JulienB: </p> <hr /> <div>==Introduction==<br /> <br /> On this page, you will find usefull informations to configure NFS ([[wikipedia:Network_File_System_(protocol)|Network File System]]) on your Host and your Target.<br /> <br /> ==NFS server on your development Host==<br /> <br /> ===Installation===<br /> * On Fedora, NFS is part of your distribution so you normally don't need to install it.<br /> * On Ubuntu/Kubuntu:<br /> $ sudo apt-get install nfs-kernel-server<br /> * On OpenSUSE:<br /> $ sudo zypper install yast2-nfs-server<br /> * On Gentoo: <br /> # emerge -av nfs-utils<br /> <br /> You can also take a look at the [https://wiki.gentoo.org/wiki/Nfs-utils gentoo wiki]<br /> ===Configuration===<br /> ====/etc/exports====<br /> * You have to declare the directory where you're going to store the files you want to share accross the network. For that you have to modify the '''/etc/exports''' file with (for example):<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ sudo vim /etc/exports<br /> &lt;/pre&gt;<br /> and add it (at the end of the file):<br /> &lt;source lang=&quot;bash&quot;&gt;<br /> ...<br /> # Directory for Armadeus:<br /> /local/export 192.168.0.0/255.255.255.0(ro,no_root_squash,sync)<br /> ...<br /> &lt;/source&gt;<br /> :In that case your Host will authorize all client from the subnet 192.168.*.* to access ''/local/export'' in '''read only''' mode. If you want read/write access from your APF to your exported dir, then replace ''ro'' with ''rw''.&lt;br&gt;<br /> * In order to use the same folder through TFTP and NFS, using the default U-Boot scripts for example, it recommended to export your /tftpboot folder as well:<br /> &lt;source lang=&quot;bash&quot;&gt;<br /> ...<br /> # Directory for Armadeus:<br /> /local/export 192.168.0.0/255.255.255.0(ro,no_root_squash,sync)<br /> /tftpboot 192.168.0.0/255.255.255.0(ro,no_root_squash,sync)<br /> ...<br /> &lt;/source&gt;<br /> * If not existing, create your export directory (for example):<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ sudo mkdir -p /local/export<br /> $ sudo chown -R $USER:$GROUP /local/export/<br /> &lt;/pre&gt;<br /> <br /> ====/etc/hosts====<br /> * You have to declare your APF/OPOS board in the PC hosts list, to fully support NFS access from U-Boot. For such purpose you have to update the ''/etc/hosts'' file with your preferred editor (as root):<br /> &lt;pre class=&quot;host&quot;&gt;<br /> $ sudo vim /etc/hosts<br /> &lt;/pre&gt;<br /> and add the IP address of your board after the localhost definition for example :<br /> &lt;source lang=&quot;bash&quot;&gt;<br /> 127.0.0.1 localhost<br /> 192.168.0.10 apf<br /> ...<br /> &lt;/source&gt;<br /> <br /> ====Restart of NFS server====<br /> {| border=&quot;1&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; summary=&quot;Restart of NFS server depending on your distribution&quot;<br /> |- style=&quot;background:#efefef;&quot;<br /> ! '''On Fedora''' || '''On Ubuntu/Kubuntu/debian''' || '''On OpenSUSE''' || '''On Gentoo'''<br /> |-<br /> <br /> |&lt;pre class=&quot;host&quot;&gt;<br /> # /sbin/service nfs restart<br /> &lt;/pre&gt;<br /> Next time you boot, you can check your NFS server status with:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> # /sbin/service nfs status<br /> &lt;/pre&gt;<br /> and if not started then:<br /> &lt;pre class=&quot;host&quot;&gt;<br /> # /sbin/service nfs start<br /> &lt;/pre&gt;<br /> <br /> || &lt;pre class=&quot;host&quot;&gt;<br /> $ sudo /etc/init.d/nfs-kernel-server restart<br /> &lt;/pre&gt;<br /> Next time you boot, you can check your NFS server status with:<br /> ''System Settings-&gt;System services''<br /> || &lt;pre class=&quot;host&quot;&gt;<br /> # /etc/init.d/nfsserver restart<br /> &lt;/pre&gt;<br /> <br /> || &lt;pre class=&quot;host&quot;&gt;<br /> # /etc/init.d/nfs restart<br /> &lt;/pre&gt;<br /> |}<br /> <br /> ==NFS usage on your Armadeus board==<br /> <br /> ===Mount the NFS partition manually ===<br /> * check if mount point is existing (for example we will take ''/mnt/nfs''):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # ls /mnt<br /> &lt;/pre&gt;<br /> * if not existing, create the mount point:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mkdir -p /mnt/nfs<br /> &lt;/pre&gt;<br /> * mount it (for example):<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mount -t nfs 192.168.0.2:/local/export /mnt/nfs<br /> &lt;/pre&gt;<br /> Here 192.168.0.2 is your Host IP address and ''/local/export'' the name of your Host directory you want to mount.<br /> <br /> {{Note| On some nfs server (for exemple with debian wheezy) there is a warning when we mount nfs partition. But the filesystem is mounted :<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mount /mnt/nfs/<br /> svc: failed to register lockdv1 RPC service (errno 97).<br /> &lt;/pre&gt;<br /> }}<br /> <br /> ===Mount the NFS partition automatically at each boot from FLASH===<br /> <br /> * login to your Armadeus board as root<br /> * open the '''/etc/fstab''' file and add this line:<br /> &lt;host-ip&gt;:/&lt;path-to-shared-folder&gt; /mnt/&lt;path-to-mount-folder&gt; nfs hard,intr,rsize=8192,wsize=8192 0 0<br /> example:<br /> 192.168.0.2:/local/export /mnt/nfs nfs hard,intr,rsize=8192,wsize=8192 0 0<br /> * check your modification:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # mount /mnt/nfs<br /> &lt;/pre&gt;<br /> * reboot your board<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # reboot<br /> &lt;/pre&gt;<br /> * and enjoy the result<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # df<br /> # ls /mnt/nfs<br /> &lt;/pre&gt;<br /> <br /> When you have a problem, verify that the NFS server is running on the host:<br /> {| border=&quot;1&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; summary=&quot;Status of NFS server depending on your distribution&quot;<br /> |- style=&quot;background:#efefef;&quot;<br /> ! '''On Fedora''' || '''On Ubuntu/Kubuntu/debian''' || '''On OpenSUSE''' || '''On Gentoo'''<br /> |-<br /> <br /> | &lt;pre class=&quot;host&quot;&gt;<br /> $ /sbin/service nfs status<br /> &lt;/pre&gt;<br /> <br /> ||&lt;pre class=&quot;host&quot;&gt;<br /> $ /etc/init.d/nfs-kernel-server status<br /> &lt;/pre&gt;<br /> || <br /> <br /> || <br /> |}<br /> <br /> ===Boot from NFS===<br /> This boot procedure is usefull to test a modified rootfs and/or a linux kernel keeping safe the original flash memory content of your board.<br /> * on your Host, expand generated rootfs image to your NFS export dir (for example if your NFS export dir is ''/tftpboot'' on your Host) and you want to boot on it using the U-Boot script nfsboot:<br /> &lt;pre class=host&gt;<br /> $ make shell_env<br /> $ source armadeus_env.sh<br /> $ sudo mkdir -p /tftpboot/$ARMADEUS_BOARD_NAME-root/boot<br /> $ sudo tar xvf $ARMADEUS_ROOTFS_TAR -C /tftpboot/$ARMADEUS_BOARD_NAME-root<br /> &lt;/pre&gt;<br /> * The copy of the Linux kernel to the NFS ''/boot'' folder, makes possible to also download it with NFS when booting the board:<br /> &lt;pre class=host&gt;<br /> $ sudo cp $ARMADEUS_BINARIES/$ARMADEUS_BOARD_NAME-linux.bin /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/<br /> &lt;/pre&gt;<br /> * With recent (3.10+) kernels, you also have to copy the Device Tree blobs:<br /> &lt;pre class=host&gt;<br /> $ sudo mkdir -p /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/dtbs<br /> $ sudo cp $ARMADEUS_BINARIES/*.dtb /tftpboot/$ARMADEUS_BOARD_NAME-root/boot/dtbs/<br /> &lt;/pre&gt;<br /> <br /> * On your board, in U-Boot, check if the ''rootpath'' envt variable is set accordingly:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; printenv rootpath<br /> &lt;/pre&gt;<br /> * If not, then set it (by default U-boot is configured to use the following path ''/tftpboot/apfXXXX-root'') where apfXXXX may be apf9328, apf27, apf28, apf51, apf6:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; setenv rootpath /tftpboot/${board_name}-root<br /> &lt;/pre&gt;<br /> * save it:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; saveenv<br /> &lt;/pre&gt;<br /> * then boot with:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> BIOS&gt; run nfsboot<br /> &lt;/pre&gt;<br /> <br /> ===Summary of the required Packages:===<br /> * portmap (Buildroot)<br /> * nfs (busybox)<br /> * nfs support (Linux, activated by default in Armadeus configuration)<br /> <br /> ==Troubleshooting==<br /> <br /> ===RPC: Program not registered===<br /> * If ''nfsd'' and ''mountd'' daemons are not running on your Host, then you will get a message like:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> mount: RPC: Program not registered<br /> &lt;/pre&gt;<br /> * In that case, restart the NFS service on your Host (see [[Network_File_System_configuration#Restart_of_NFS_server|above]]).<br /> <br /> ===Portmap/RPCbind===<br /> * To successfully mount a NFS drive, ''portmap''/''rpcbind'' daemon should be running on your APF/OPOS, if not, system will hang during some minutes when you launch the mount !!<br /> To check if ''portmap''/''rpcbind'' is running, look at the running processes:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # ps faux<br /> &lt;/pre&gt;<br /> If ''portmap/rpcbind'' is not listed, then launch it manually or install it:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> # /etc/init.d/S13portmap<br /> &lt;/pre&gt;<br /> * Note: ''portmap'' is obsolete since 2017<br /> <br /> ===Connection refused===<br /> * If you get this on your APF when trying to mount:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> mount: mounting 192.168.0.2:/local/export on /mnt/nfs/ failed: Connection refused<br /> &lt;/pre&gt;<br /> * then your kernel might need some extra options:<br /> &lt;pre class=&quot;apf&quot;&gt;<br /> mount -o port=2049,nolock,proto=tcp 192.168.0.2:/local/export /mnt/nfs/<br /> &lt;/pre&gt;<br /> <br /> ==NFS Server under Windows==<br /> For those who want to use the NFS service on Windows, a small and FREE NFS server is available [http://www.freedownloadscenter.com/Utilities/Misc__Utilities/nfsAxe.html here].<br /> <br /> ==Links==<br /> * http://www.denx.de/wiki/view/DULG/SystemSetup#Section_4.8.<br /> <br /> [[Category:Network]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=USB_Webcams&diff=15031 USB Webcams 2021-07-01T13:50:57Z <p>JulienB: /* Tested models */</p> <hr /> <div>Even if not optimized for data transfer performances, USB Webcams are (mostly) cheap and can be a good starting point for video acquisition/processing.<br /> <br /> This page will summarize the validated models and link to their respective documentation.<br /> <br /> {{Note|If you need performances, we recommend you to use camera modules connectible to either [[Camera_interface| the CSI interface of the i.MX processors]] or the FPGA.&lt;br&gt;<br /> For the really intensive image processing applications, Armadeus Systems is developing and providing the [[SP_VISION]] APF27Dev/APF51Dev extension board.}}<br /> <br /> ==Tested models==<br /> {| border=&quot;1&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; summary=&quot;Supported Webcams&quot;<br /> |- style=&quot;background:#efefef;&quot;<br /> !'''Model''' || colspan=&quot;3&quot; | '''Status&lt;br&gt; APF27/APF51/OPOS6UL''' || '''USB ID''' || '''Driver''' || '''Comments'''<br /> |----------------<br /> |'''Logitech QuickCam Pro 4000''' [[Image:Logitech_QuickCam_Pro_4000.jpg]] || style=&quot;background:#ff0000;&quot; | KO || style=&quot;background:#ffff00;&quot; | TBT || style=&quot;background:#00ff00;&quot; | OK || 046d:08b2 || [[PWC Webcams|PWC]] || YUV:4:2:0, BSP 8.0+<br /> |----------------<br /> |'''Creative NX PD1110''' || style=&quot;background:#00ff00;&quot; | '''OK''' || style=&quot;background:#ffff00;&quot; | TBT || style=&quot;background:#ffff00;&quot; | TBT || || [[GspcaWebcam]]/gspca_zc3xx || Camera outputs JPEG !!<br /> |----------------<br /> |'''Labtec Webcam Pro''' [[Image:labtec_webcam_pro.jpg|100px]] || style=&quot;background:#ffff00;&quot; | TBT || style=&quot;background:#ffff00;&quot; | TBT || style=&quot;background:#00ff00;&quot; | '''OK''' || 046d:08a2 || [[GspcaWebcam]] || Camera outputs JPEG -&gt; require recent BSP (8.0+) to be tested with capture<br /> |----------------<br /> |'''Creative Live!CAM Video IM''' [[Image:creative_live_cam_im.jpeg]] || style=&quot;background:#ffff00;&quot; | TBT || style=&quot;background:#ffff00;&quot; | TBT || style=&quot;background:#ff0000;&quot; | KO || 041e:4053 || [[GspcaWebcam]]/gspca_zc3xx || Camera seems to output JPEG<br /> |----------------<br /> |'''Creative Live! Cam Video IM Pro''' [[Image:Creative_Live_Cam_IM_Pro.jpg]] || style=&quot;background:#00ff00;&quot; | '''OK''' || style=&quot;background:#ffff00;&quot; | TBT || style=&quot;background:#ffff00;&quot; | TBT || || [[UVC Webcams|UVC]] || '''!! Some versions of this camera do not have an UVC compatible chip and so are not working !! ex: 041e:4055'''<br /> |----------------<br /> |'''Logitech Webcam C300''' [[Image:Logitech_Webcam_C300.jpg]] || style=&quot;background:#00ff00;&quot; | '''OK''' || style=&quot;background:#00ff00;&quot; | '''OK''' || style=&quot;background:#00ff00;&quot; | '''OK''' || || [[UVC Webcams|UVC]] || Camera works great with capture example as it output raw YUV 4:2:2 !<br /> |----------------<br /> |'''Logitech QuickCam Messenger''' [[Image:Logitech_quickcam.jpg]] || style=&quot;background:#ffff00;&quot; | TBT || style=&quot;background:#ffff00;&quot; | TBT || style=&quot;background:#ffff00;&quot; | TBT || 046d:08f0 || gspca_stv06xx || Camera outputs Bayer<br /> |----------------<br /> <br /> <br /> |}<br /> <br /> == Links ==<br /> * https://doc.ubuntu-fr.org/webcam_tableau<br /> <br /> [[Category:Vision]]<br /> [[Category:USB]]</div> JulienB http://www.armadeus.org/wiki/index.php?title=File:Creative_live_cam_im.jpeg&diff=15030 File:Creative live cam im.jpeg 2021-07-01T13:28:53Z <p>JulienB: </p> <hr /> <div></div> JulienB