tag:blogger.com,1999:blog-66713353882748671682024-03-13T04:46:33.761-03:00otubo.netEduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.comBlogger126125tag:blogger.com,1999:blog-6671335388274867168.post-42360783423520155652018-02-21T10:18:00.002-03:002018-02-23T12:01:09.503-03:00Creating custom ISO images for Fedora, CentOS or RHEL<h3>
TL;DR: This post is about creating custom ISO images with custom made RPM packages.</h3>
Motivation: My motivation was VERY specific. I had to debug a package that had an issue only on first execution after a fresh clean installation - <a href="https://bugzilla.redhat.com/show_bug.cgi?id=1518498">https://bugzilla.redhat.com/show_bug.cgi?id=1518498</a>. This means I had to create a new package and include it on a new custom ISO image every time I wanted to debug a new line or test a new solution.<br />
<br />
Also, during the course of this, I faced error messages like:<br />
<br />
<pre>09:58:3,721 DEBUG packaging: Member: hypervkvpd.x86_64 0:0-0.32.20161211git.e17 - u
09:58:3,727 ERR packaging: Error populating transaction after 10 anaconda retries:
failure: Packages/hypervkvpd-0-0.32.20161211git.e17.x86_64.rpm from anaconda:
[Errno 256] Mo more mirrors to try
09:58:3,727 DEBUG packaging: file:///run/install/repo/Packages/hypervkvpd-0-0.32.
20161211git.e17.x86_64.rpm: [Errno -1] Header is not complete.
</pre>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTC-M6kPR2EHt4ri2WkFi6C1Q1uQc_ssXJr2loCKEvvMVwPyqx7kpUC4YWxaiA3zmi8KuuDUkfb5Wnmo9e2ilTuU31tN4SM8Vgk_y_EjjCJFyLI4cwB-goWXVB6M4d8nKbYMU7sjgfXMoA/s1600/6bb3de57a5a7e566ba60ce030275f976.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1066" data-original-width="1600" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTC-M6kPR2EHt4ri2WkFi6C1Q1uQc_ssXJr2loCKEvvMVwPyqx7kpUC4YWxaiA3zmi8KuuDUkfb5Wnmo9e2ilTuU31tN4SM8Vgk_y_EjjCJFyLI4cwB-goWXVB6M4d8nKbYMU7sjgfXMoA/s320/6bb3de57a5a7e566ba60ce030275f976.jpg" width="320" /></a></div>
<br />
The trick is very simple, first create your RPM package - here I assume you already know how to do that. Make sure your package has the same name and same dependencies than the one you want to replace. After that, you're ready to start building the new custom ISO image:<br />
<br />
<b>1. Download and mount the ISO image you want to customize:</b><br />
<pre># mount -t iso9660 -o loop RHEL-7.5-20180206.n.0-Server-x86_64-dvd1.iso temp/</pre>
<pre>
</pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<span style="font-family: inherit;"><b>2. Create the root directory for the new ISO image:</b></span><br />
<pre># mkdir iso_build</pre>
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><b>3. Copy everything from the original ISO to your newly created root directory:</b></span><br />
<pre># cp -pRf temp* iso_build/
</pre>
<br />
<b>4. Place your newly created RPM inside the iso_build/Packages/ directory;</b><br />
<br />
<b>5. Remove all hash data from repodata/ directory, but <span style="color: red;">KEEP</span> the comps file:</b><br />
<pre># rm -rfv repodata/*.gz repodata/*.bz2;
</pre>
<br />
<b>6. Create the new repository hash information, using as a reference the old comps file you didn't delete:</b><br />
<pre># createrepo /root/iso_build/Packages -g /iso_build/repodata/ -o /iso_build/ \
-u file:///run/install/repo/Packages/;
</pre>
<br />
<b>7. From inside iso_build/, generate the new ISO image:</b><br />
<pre># genisoimage -U -r -v -T -J -joliet-long -V 'RHEL-7.5 Server.x86_64' \
-volset 'RHEL-7.5 Server.x86_64' -A 'RHEL-7.5 Server.x86_64' \
-b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot \
-boot-load-size 4 -boot-info-table -eltorito-alt-boot \
-e images/efiboot.img -no-emul-boot -o /RHEL-7.5-DEBUG-Server-x86_64-dvd1.iso .
</pre>
<br />
Special thanks to <a href="mailto:arxcruz@redhat.com" target="_blank">Arx Cruz</a> and <a href="mailto:emachado@redhat.com" target="_blank">Edjunior Machado</a> who helped me on this issue.<br />
<br />
Enjoy your debugging.Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com0Berlin, Germany52.520006599999988 13.40495399999997552.21073109999999 12.759506999999974 52.829282099999986 14.050400999999976tag:blogger.com,1999:blog-6671335388274867168.post-4055869949719590532018-02-09T14:17:00.000-02:002018-02-12T06:27:18.476-02:00QEMU Sandboxing for dummiesDevConf is an annual conference that takes place in Brno, Czech Republic. This year I applied for a talk to go over my work that I develop since <a href="https://git.qemu.org/?p=qemu.git;a=commit;h=2f668be77501c0232a84aafb6a066c9915987f0e" target="_blank">mid 2012</a>: Security on QEMU/KVM Virtual Machines using <a href="https://en.wikipedia.org/wiki/Seccomp" target="_blank">SECCOMP</a>. Since then <a href="https://git.qemu.org/?p=qemu.git;a=commitdiff;h=92bfedb0b6071c5c59f97c99a0ff79e3a0856bd4" target="_blank">I became the maintainer</a> of this feature on QEMU and <a href="https://git.qemu.org/?p=qemu.git;a=commitdiff;h=1bd6152ae23549032ef4aca0d3d350512f012f05" target="_blank">released the second and better version not long ago</a>. On this post you'll find the <a href="https://pt.slideshare.net/EduardoOtubo/qemu-sandboxing-for-dummies" target="_blank">slides</a> and the <a href="https://youtu.be/_7yGiafZdVc" target="_blank">full video</a> of the presentation.<br />
<br />
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="485" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/of0XrPgwKSTZ5l" style="border-width: 1px; border: 1px solid #ccc; margin-bottom: 5px; max-width: 100%;" width="595"> </iframe> </div>
<div style="margin-bottom: 5px;">
<br />
<div style="text-align: center;">
<strong><a href="https://www.slideshare.net/EduardoOtubo/qemu-sandboxing-for-dummies" target="_blank" title="QEMU Sandboxing for dummies">QEMU Sandboxing for dummies</a> </strong> de <strong><a href="https://www.slideshare.net/EduardoOtubo" target="_blank">Eduardo Otubo</a></strong></div>
<strong><br /></strong>So here we go, very first experience lecturing in English, what a catastrophe! In my defense the audience was very peculiar, not only <a href="https://www.linkedin.com/in/paulcmoore/" target="_blank">the guy that very started libseccomp</a> was there, but <a href="https://www.linkedin.com/in/amnon-ilan-17660710/" target="_blank">my manager</a> and the <a href="https://www.linkedin.com/in/karen-noel-8136072/" target="_blank">director of the department as well</a>. Anxiety apart, I think it was an outstanding experience, would do it again in the future. :-)<br />
<br /></div>
<div style="text-align: center;">
<iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/_7yGiafZdVc" width="560"></iframe><br /></div>
<br />Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com0Brno, Czechia49.1950602 16.60683710000000749.0290597 16.284113600000008 49.3610607 16.929560600000006tag:blogger.com,1999:blog-6671335388274867168.post-33689225030984373282018-01-19T08:08:00.001-02:002018-02-21T13:07:15.138-03:00Xen synchronicity between frontend and backend devices So I bumped into a problem last month and it took me too much time to figure out the big picture of the problem since I didn't find too much documentation about that. The help I could find when trying to figure out this was mostly from good people on the channel #xendevel @ Freenode, mostly maintainers. So if you want to understand a little bit of Xen without pinging people on IRC, that's the place.<br />
<br />
The problem is the following: I'm running RHEL on Xen Hypervisor and whenever I try to unload and reload xen_netfront kernel module I see outputs like that on dmesg:<br />
<pre># modprobe -r xen_netfront
# dmesg|tail
[ 105.236836] xen:grant_table: WARNING: g.e. 0x903 still in use!
[ 105.236839] deferring g.e. 0x903 (pfn 0x35805)
[ 105.237156] xen:grant_table: WARNING: g.e. 0x904 still in use!
[ 105.237160] deferring g.e. 0x904 (pfn 0x35804)
[ 105.237163] xen:grant_table: WARNING: g.e. 0x905 still in use!
[ 105.237166] deferring g.e. 0x905 (pfn 0x35803)
[ 105.237545] xen:grant_table: WARNING: g.e. 0x906 still in use!
[ 105.237550] deferring g.e. 0x906 (pfn 0x35802)
[ 105.237553] xen:grant_table: WARNING: g.e. 0x907 still in use!
[ 105.237556] deferring g.e. 0x907 (pfn 0x35801)
</pre>
<br />
Moreover, the interface is not usable as well:<br />
<br />
<pre># dmesg|tail
[ 105.237163] xen:grant_table: WARNING: g.e. 0x905 still in use!
[ 105.237166] deferring g.e. 0x905 (pfn 0x35803)
[ 105.237545] xen:grant_table: WARNING: g.e. 0x906 still in use!
[ 105.237550] deferring g.e. 0x906 (pfn 0x35802)
[ 105.237553] xen:grant_table: WARNING: g.e. 0x907 still in use!
[ 105.237556] deferring g.e. 0x907 (pfn 0x35801)
[ 160.050882] xen_netfront: Initialising Xen virtual ethernet driver
[ 160.066937] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[ 160.067270] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 160.069355] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready
# ifconfig eth0
eth0: flags=4098 mtu 1500
ether 00:00:00:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# ifconfig eth0 up
SIOCSIFFLAGS: Cannot assign requested address
</pre>
<br />
The first problem happens because the backend part of the module (xen_netback) is still using some pieces of memory (g.e. which states for grant entries) that are shared between guest and host. The ideal scenario would be to wait for the netback to free those entries and only then unload the netfront module. This was actually a bug on the synchronicity of the netfront and netback parts.<br />
<br />
The state of the drivers are kept in separate structs, as defined in include/xen/xenbus.h:69:<br />
<br />
<pre>/* A xenbus device. */
struct xenbus_device {
const char *devicetype;
const char *nodename;
const char *otherend;
int otherend_id;
struct xenbus_watch otherend_watch;
struct device dev;
enum xenbus_state state;
struct completion down;
struct work_struct work;
};
</pre>
<br />
And the netfront state can be seen from the hypervisor with the command:<br />
<br />
<pre># xenstore-ls -fp
[...]
/local/domain/1/device/vif/0/state = "4" (n1,r0)
[...]
</pre>
<br />
The number 4 indicates XenbusStateConnected (as defined in include/xen/interface/io/xenbus.h:17). So it means everything is a matter of wait for one end to finish using the memory region and the other to free, this first piece of the puzzle is solved by this patch:<br />
<br />
<pre>diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index 8b8689c6d887..391432e2725d 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -87,6 +87,8 @@ struct netfront_cb {
/* IRQ name is queue name with "-tx" or "-rx" appended */
#define IRQ_NAME_SIZE (QUEUE_NAME_SIZE + 3)
+static DECLARE_WAIT_QUEUE_HEAD(module_unload_q);
+
struct netfront_stats {
u64 packets;
u64 bytes;
@@ -2021,10 +2023,12 @@ static void netback_changed(struct xenbus_device *dev,
break;
case XenbusStateClosed:
+ wake_up_all(&module_unload_q);
if (dev->state == XenbusStateClosed)
break;
/* Missed the backend's CLOSING state -- fallthrough */
case XenbusStateClosing:
+ wake_up_all(&module_unload_q);
xenbus_frontend_closed(dev);
break;
}
@@ -2130,6 +2134,20 @@ static int xennet_remove(struct xenbus_device *dev)
dev_dbg(&dev->dev, "%s\n", dev->nodename);
+ if (xenbus_read_driver_state(dev->otherend) != XenbusStateClosed) {
+ xenbus_switch_state(dev, XenbusStateClosing);
+ wait_event(module_unload_q,
+ xenbus_read_driver_state(dev->otherend) ==
+ XenbusStateClosing);
+
+ xenbus_switch_state(dev, XenbusStateClosed);
+ wait_event(module_unload_q,
+ xenbus_read_driver_state(dev->otherend) ==
+ XenbusStateClosed ||
+ xenbus_read_driver_state(dev->otherend) ==
+ XenbusStateUnknown);
+ }
+
xennet_disconnect_backend(info);
unregister_netdev(info->netdev);
</pre>
<br />
The second piece of the problem is that the interface is not usable when reloaded back. And that's a lack of initializing the state of the device so the backend notices it, and hence, connects the two drivers together (frontend and backend). This was easily solved by the following patch:
<br />
<br />
<pre>diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index c5a34671abda..9bd7ddeeb6a5 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -1326,6 +1326,7 @@ static struct net_device *xennet_create_dev(struct xenbus_device *dev)
netif_carrier_off(netdev);
+ xenbus_switch_state(dev, XenbusStateInitialising);
return netdev;
exit:
</pre>
Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com0Berlin, Germany52.520006599999988 13.40495399999997552.21073109999999 12.759506999999974 52.829282099999986 14.050400999999976tag:blogger.com,1999:blog-6671335388274867168.post-74082658394110813592015-11-06T20:00:00.000-02:002015-11-16T21:15:12.892-02:00Save radio shows in podcasts so you can listen later!The story behind this project is that, since I moved to Germany I miss some old news shows on the radio that I use to listen in Brazil. Yeah, I know I can listen to them online. But due to the difference on the timezone, sometimes I just don't want to listen to it while I have my lunch, or work. Saving them into a podcast is much easier and gives me the freedom to listen whenever I want.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOmSLj_mpxJcQ60OGzi9VP2OwUcCCkLWvCXyIaobpnwFSzWdYlcXjFvp3LBv_I8LRTw3BszRBGlXS45ZPrcSzk0AhtwtHolRGiG_hTxc0OZoDb-dqeYicaBju276EMN6Q8X4eGd5iPQQuz/s1600/onair.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOmSLj_mpxJcQ60OGzi9VP2OwUcCCkLWvCXyIaobpnwFSzWdYlcXjFvp3LBv_I8LRTw3BszRBGlXS45ZPrcSzk0AhtwtHolRGiG_hTxc0OZoDb-dqeYicaBju276EMN6Q8X4eGd5iPQQuz/s320/onair.jpg" width="320" /></a></div>
<br />
The idea is pretty simple: Use ffmpeg to save the stream online, copy it to your podcast server and enjoy. Let's work to put everything together:<br />
<br />
First thing you're gonna need is some scripts. The first one captures the stream of audio and dumps into a ts file:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normall;">otubo@deathstar /opt/ $ cat capture_stream.sh </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">#/bin/bash</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S");</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">/usr/bin/ffmpeg -i URL<radio url=""> <url of="" online="" radio="" stream="" the="">-c copy /opt/radio_show_${TIMESTAMP}.ts</url></radio></span><br />
<br />
Next, you're going to need a script to encode the transport stream into mp3:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">otubo@deathstar /opt/ $ cat encode_stream.sh </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">#/bin/bash</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">LAST_TS_FILE="$(ls -1t /opt/|grep ts|head -1)"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">NEW_MP3_FILE="$(echo $LAST_TS_FILE|sed -e 's/ts/mp3/g')"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">LAST_TS_FILE="/opt/${LAST_TS_FILE}"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">NEW_MP3_FILE="/var/www/html/media/${NEW_MP3_FILE}"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">/usr/bin/ffmpeg -i "${LAST_TS_FILE}" -acodec mp3</span><span style="font-size: normal;"> <span style="font-family: "courier new" , "courier" , monospace;">-write_xing 0</span> </span><span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">"${NEW_MP3_FILE}"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">/usr/bin/id3 -t "$(date)" "${NEW_MP3_FILE}"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">/usr/bin/id3 -a "News" "${NEW_MP3_FILE}"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">wget -O- http://GENERATOR SERVER ADDR/html/pg-cron.php?key=YOUR KEY >/dev/null 2>&1</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">rm "${LAST_TS_FILE}"</span><br />
<br />
<b>Little gotcha</b>: I had <a href="https://sourceforge.net/p/podcastgen/support-requests/579/" target="_blank">this issue</a> with the iPhone podcast app, according to <a href="https://trac.ffmpeg.org/ticket/2697" target="_blank">this ticket</a>, adding the option <span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">-write_xing 0</span> solves the problem.<br />
<br />
Note that in the last script, there's the "Podcast Generator" server. That's a really neat and simple to use podcast server made with php5. You can download it here: <a href="http://podcastgen.sourceforge.net/">http://podcastgen.sourceforge.net/</a>. The instructions to install and configure are very easy, and as they say: Newbie-proof.<br />
<br />
Let's dig down a little bit on the last script: First you run ffmpeg to convert the transport stream into mp3, then you set the title id3 tag for the title of this podcast "episode", than set the artist id3 tag for the description. After that you call wget to reload your podcast library and update the RSS. And it's done!<br />
<br />
Now let's put everything on the crontab:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">30 10 * * * /opt/capture_stream.sh</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">2 12 * * * killall -9 ffmpeg</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: normal;">3 12 * * * /opt/encode_stream.sh</span><br />
<div>
<br /></div>
Easy and simple: The show starts at 10:30 (my germany time) and ends at 12h00 (I added 2 more minutes, just in case). Three minutes after the dump is finished I start the encoding script. And that's all! Podcast generator also gives you RSS url to put on your smartphone. Pretty easy :D<br />
<div>
<br /></div>
Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com0tag:blogger.com,1999:blog-6671335388274867168.post-34772193696774286812015-11-06T11:44:00.000-02:002015-11-06T11:44:16.462-02:00RetroPie: Play snes games on your Raspberry Pi!<div class="separator" style="clear: both; text-align: left;">
So I wanted to play some old Super Nintendo games and also share this special retro gaming style with my daughter. So I decided to put it on my Raspberry Pi and have some fun. So let's do it!</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD4LPyb7c0Kx389Bwfz6D4xZwgcdc1XeJVIFwgxeBduigwLgdbu5NZK44atpLQfUTtuCnU1qCkKKVs0UsLwntKf4lUUCodAI5jNLnSGWP84Gb5huThXlsGYSocsDcmS2TrHCOnN0gWhkd6/s1600/SNES-Mod1-Console-Set.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD4LPyb7c0Kx389Bwfz6D4xZwgcdc1XeJVIFwgxeBduigwLgdbu5NZK44atpLQfUTtuCnU1qCkKKVs0UsLwntKf4lUUCodAI5jNLnSGWP84Gb5huThXlsGYSocsDcmS2TrHCOnN0gWhkd6/s400/SNES-Mod1-Console-Set.jpg" width="400" /></a></div>
<br />
The process is pretty easy, but the controllers configuration are a little tricky. <a href="https://github.com/RetroPie/RetroPie-Setup/wiki/First-Installation" target="_blank">Follow this guide</a> to install RetroPie on an SD card and boot up your Raspberry Pi. This documentation explains everything you need to know about configuring wifi, setting up everything to have all up and running.<br />
<br />
Now to the controller configuration:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpzGkoEtGNZiEDs0asiPcvOXvAYldjaT1LkoTLhToKIvYtYxkQFtBAYWcOeNgi5KKOd77dDXHB9PUHQ4ot7h3SRG2jUsaL-wS1HlTG2ynDtl4i9ODFlCUVQTqlATqr27MUzT3nuNYkWYgE/s1600/db_file_img_11116_800x600.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpzGkoEtGNZiEDs0asiPcvOXvAYldjaT1LkoTLhToKIvYtYxkQFtBAYWcOeNgi5KKOd77dDXHB9PUHQ4ot7h3SRG2jUsaL-wS1HlTG2ynDtl4i9ODFlCUVQTqlATqr27MUzT3nuNYkWYgE/s320/db_file_img_11116_800x600.jpg" width="320" /></a></div>
I bought <a href="http://www.ebay.de/itm/231697063517" target="_blank">two ordinary</a> snes controllers, they work pretty fine. The configuration is done via the file <span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/opt/retropie/configs/all/retroarch.cfg</span><span style="font-family: inherit;">, find this file and open it with your favorite text editor. Now find the </span><span style="font-family: Courier New, Courier, monospace;"><span style="font-size: x-small;">input_player</span> </span><span style="font-family: inherit;">and erase everything related to it and make it look like this:</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_device_p1 = "0"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_libretro_device_p1 = "0"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_analog_dpad_mode = "0"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player1_joypad_index = "0"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player1_b_btn = "2"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player1_y_btn = "3"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player1_select_btn = "8"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player1_start_btn = "9"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player1_up_axis = "-1"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player1_down_axis = "+1"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player1_left_axis = "-0"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player1_right_axis = "+0"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player1_a_btn = "1"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player1_x_btn = "0"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player1_l_btn = "4"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player1_r_btn = "5"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_device_p2 = "1"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_libretro_device_p2 = "0"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_analog_dpad_mode = "0"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_joypad_index = "1"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_b_btn = "2"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_y_btn = "3"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_select_btn = "8"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_start_btn = "9"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_up_axis = "-1"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_down_axis = "+1"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_left_axis = "-0"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_right_axis = "+0"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_a_btn = "1"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_x_btn = "0"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_l_btn = "4"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_player2_r_btn = "5"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_enable_hotkey_btn = "8"</span><br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">input_exit_emulator_btn = "9"</span><br />
<div>
<br /></div>
<div>
This is all you're going to need to make those USB controllers work. If you bought a different controller, you can try to configure them using this command:</div>
<div>
<br /></div>
<div>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">sudo ./retroarch-joyconfig -j 1 -p 2 >> /opt/retropie/configs/all/retroarch.cfg</span></div>
<div>
<br /></div>
<div>
This will interactively ask you to push every button in order to map it to the correct values. Always remember to double check your <span style="font-family: 'Courier New', Courier, monospace;"><span style="font-size: x-small;">/opt/retropie/configs/all/retroarch.cfg</span></span><span style="font-family: inherit;"> to avoid duplicates, this got me in trouble for quite some time.</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;">After that, you can copy all your ROM files into </span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">/home/pi/RetroPie/roms/snes</span>, or if you have ROMs for different console, just copy into the correct folder.</div>
<div>
<br /></div>
<div>
That's it. Enjoy :D</div>
Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com0tag:blogger.com,1999:blog-6671335388274867168.post-36952729804854650852015-06-08T18:23:00.001-03:002015-11-06T11:14:39.198-02:00GSM bridge between two raspbx hosts<i>Disclaimer: I know there's a lot of options on the market for free long distance calls like Skype, Viber, WhatsApp and so on. The goal of this personal project was all along to come up with a proof of concept that actually works, study something different other than my actual job and, why not, have some fun :) <b>BUT, yes, there's one single use case that this setup will be useful:</b> You're in the middle of nowhere, no internet connection and you need to call someone in the other side of the planet but you don't want to pay a long distance call: BINGO!</i><br />
<i><br /></i>
<i>Disclaimer2: For this tutorial you'll have to be prepared for Asterisk terminologies like trunks and channels. If you're not familiar with this vocabulary, please take a quick look at <a href="http://www.asterisk.org/community/documentation" target="_blank">this documentation</a>.</i><br />
<br />
Description of the environment: The server1 is placed on the Brazilian side. It's a <a href="http://en.wikipedia.org/wiki/Raspberry_Pi" target="_blank">Raspberry Pi</a> model B that runs an asterisk-modded-for-raspberry-pi distro called <a href="http://www.raspberry-asterisk.org/" target="_blank">raspbx</a>. Attached to it there's an <a href="http://www.3g-modem-wiki.com/page/Huawei+E160+(E160G,+E160E,+E160X)" target="_blank">USB GSM dongle</a> with a SIM card for the local Brazilian operator. In the same network of my server1 there's a <a href="http://www.cisco.com/c/en/us/products/collateral/unified-communications/small-business-voice-gateways-ata/data_sheet_c78-502441.html" target="_blank">Cisco PAP2t Internet Phone Adapter</a> and, attached to it, a regular land line telephone. The same setup is duplicated on the German side, except that the Raspberry Pi is model B+.<br />
<br />
<div class="mxgraph" style="overflow: auto; position: relative; width: 100%;">
<div style="height: 1px; overflow: hidden; width: 1px;">
5VpNk+MmEP01rkouqZFky7PHzGZ2ctmqVPmwyRFLjESNJFQIf82v30ZqJNBHxh47yFXxxaIFNLzmPRrsRfA1P74IUqbfeUyzhf8QHxfBHwvf95bBF/hSllNjeVyvGkMiWIyVOsOGvVM0PqB1x2JaWRUl55lkpW2MeFHQSFo2IgQ/2NVeeWZ7LUmiPXaGTUSyofUHi2WKs/DDzv4nZUmqPXshTnhLordE8F2B/hZ+8Fp/mtc50X3hRI8PTXGJ7U9YXi+1p8Ia0TvnuWUQtGrRwz5fGQ4Ly1suYioak7ZlrHgzMQqeIZyCc2ipnvLjV5qpkOpoNc2+Tbxt4RK0sHxPNgiaFpU8achpDBHAIhcy5QkvSPbcWZ9qWKnqAUB6SmWewaMHj/TI5N/G8z+qym8rKFWSCPm7WhCq1z2BFo3tG4PxYIsi7tUAi/E+2ol97VUVmmGrsU7OHE0V34kIa+FswXFCsVbNBwTnhfKcSnGqw5kRyfZ27wQjlbT1OmjhAdEdRxpdw8R22KkgVbmlonZXsoUfZjCkp5jt4TFRjyOmXyoKIAjvV/0O3I606Ft7IT6kTNJNSWpYDqAcdhhxpFRIqoVkAt0hbthAywzKTvCA5YNBYmRAavBX264BGglrAL2rtmB42XxXQsiLBGAYQTYH8cyngZ0bQt8bQrgegfDLDSDUri5SBYueM0nE51QBZ2uqQr2/OFAFdG2qAt9J2CTcr7c26pqzK3ecxe3cgIEVgEIB4XAPRLB6tIEIh0B4ev82kQhvQT29Pm+zIX/Al3M49zlOrYecqlF1wCkPdwCn6gVYiJN6pVrUhXtQtpEouMp30LVB6ZKU9VGBVREfrnLnG+rSYU6CgmKAIWlGy5QXdA4k9JQQidWZqYW2XYOEXhf/ITlrBt5JauGNMNCrj5guhHDIwSvOHP69nzlCvT5nOHR4Q4ZfcOqYhtY9iD1tcHns8PHuxak2tBt3IwJ3snE3GjHPmUT7vodDySqY71CiU/y7T8XNhaMM/YWj754uSJX0/a/OlR4R9qvwRI38n2z9Y5FwtvVr5xPpN76ddXt2mX+P3L62Cfg8WNiy5jIDD7APA4utIO8sY/ATh05Y4OblwMXbkLBZBj/9KGI60H57veh18NEtzC3WS4CDNTAaQtGpRpSRqmKRjYClPF2Nz16vDGEygNBQmTho29nagh7+4nD31kXB620F7baou2g0D1uZPzV90JHXvy5rhHLQUR2rdtrnhW+ofgkVuVrfIcnVSi22lfqqF/sgKW8X/1k5uUtKhD1OaBlxwomhht4fJybyF28kbfw3zpxPj76n9rx0KT0mh3w1PaDY/aDcVO/+LBA8/wQ=</div>
</div>
<script src="https://www.draw.io/js/embed-static.min.js" type="text/javascript"></script>
What it does: This is the list of features that this project performs right now:<br />
<ol>
<li>Someone in Brazil calls my Brazilian number, the dongle1 answers the call, redirects to an IAX2 trunk directly to server2. The server2 takes this incoming call and uses the dongle2 to place a new call to my german cellphone. The other way is still pinned to a single phone -- like, call my dongle2 to reach a single number in Brazilian side -- but improvements are coming.</li>
<li>Someone uses phone1 on Brazilian side to call extension phone2 on German side (and vice-versa) like a regular landline phone.</li>
<li>Someone uses phone1 or phone2 to reach my german cellphone.</li>
</ol>
<div>
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/hcJ1lrllZ7o" width="420"></iframe><br />
<i>Ok, so LET'S DO IT!!</i></div>
</div>
<div>
<br /></div>
<div>
I'm gonna skip the PAP2t configuration because I think it's too much. This is only needed if you want to use land line telephones, it's not required for the GSM bridge. If anyone is interested in doing that, please leave a comment and I'll write a new post only for that configuration.<br />
<br />
<b>Important note: All the configuration explained from now on is identical on both servers.</b></div>
<div>
<ol>
<li><a href="https://www.raspberrypi.org/documentation/installation/installing-images/README.md" target="_blank">Install</a> <a href="http://www.raspberry-asterisk.org/downloads/" target="_blank">raspbx</a> on your RPi's SD card. Also take a time to read through the raspbx documentation, which is very useful</li>
<li>Use the script install-dongle (built-in inside raspbx) to install your dongle on your RPi. Important notes regarding problems I got:</li>
<ol>
<li>There's a <a href="http://wiki.e1550.mobi/doku.php?id=requirements" target="_blank">list of GSM dongles that are tested</a> with voice, SMS and USSD. I bought the Huawei E160;</li>
<li>I had to unlock the voice feature with <a href="https://www.dc-unlocker.com/" target="_blank">DC-Unlocker</a> for Windows;</li>
<li><b>Plug your dongle and only after that plug your RPi power.</b> If you try to plug your dongle while the RPi turned on, you may experience your RPi to reboot due to power consumption failures;</li>
<li>If your RPi starts rebooting it's because it can't handle the gsm dongle power consumption, in this case, use a proper powered USB hub. I bought the <a href="http://www.amazon.com/D-LINK-DUB-H7-7-port-USB-2-0/dp/B008ANKKU4/ref=sr_1_4?ie=UTF8&qid=1433797161&sr=8-4&keywords=d+link+hub+usb" target="_blank">D-Link Dub-H7</a></li>
<li><a href="http://www.thegeekstuff.com/2013/05/modem-at-command/" target="_blank">Find out the IMEI and the IMSI code of your dongle</a> and set the correct values under <span style="font-family: "courier new" , "courier" , monospace;">/etc/asterisk/dongle.conf </span>because <span style="font-family: "courier new" , "courier" , monospace;">/dev/ttyUSB1 </span>or <span style="font-family: "courier new" , "courier" , monospace;">/dev/ttyUSB2</span> may change;</li>
</ol>
<li>Before you start configuring raspbx itself, it's important that you have both sides with network configured properly with static IPs and (in my case) <a href="http://dyn.com/dns/" target="_blank">DynDNS</a>. I didn't want to open too many ports on the routers on both sides so <a href="http://readwrite.com/2014/04/10/raspberry-pi-vpn-tutorial-server-secure-web-browsing" target="_blank">I just setup an OpenVPN</a> vpn; </li>
<li>Setup a new custom trunk for your dongle under Connectivity <span style="background-color: white; color: #333333; font-family: "georgia" , serif; font-size: 13px; line-height: 20.7999992370605px;">→</span> Trunks <span style="background-color: white; color: #333333; font-family: "georgia" , serif; font-size: 13px; line-height: 20.7999992370605px;">→</span> Add Custom Trunk and set these values:<br /><br /><span style="font-family: "courier new" , "courier" , monospace;"><b>Trunk Name:</b> to-my-cellphone<br /><b>Outbound CallerID:</b> Your SIM card number with country code (with a plus sign at the beginning)<br /><b>Custom Dial String:</b> dongle/dongle0/$OUTNUM$<your number="" personal="" telephone=""><br /></your></span><br /><span style="color: red;">Note: This is the trunk that will actually place the inbound calls to your personal telephone.</span><br /><br /><div class="separator" style="clear: both; text-align: center;">
</div>
</li>
<li><div class="separator" style="clear: both; text-align: left;">
Setup a new IAX2 trunk under Connectivity <span style="background-color: white; color: #333333; font-family: "georgia" , serif; font-size: 13px; line-height: 20.7999992370605px;">→</span> Trunks <span style="background-color: white; color: #333333; font-family: "georgia" , serif; font-size: 13px; line-height: 20.7999992370605px;">→</span> Add IAX2 Trunk and set these values:</div>
<br />
<span style="font-family: "courier new" , "courier" , monospace;"><b>General Settings:</b><br /><b>Trunk Name:</b> Something that would remember the incoming connection from the other server<br /><b>Outbound CallerID:</b> Your personal phone number<br /><br /><b>Outgoing Settings:</b><br /><b>Trunk Name:</b> (same as above, I also used the same name and it's ok)</span><br />
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace;"><b>host</b>=static IP under vpn of the remote server</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace;"><b>username</b>=any username</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace;"><b>secret</b>=any password</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace;"><b>type</b>=friend</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace;"><b>trunk</b>=yes</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace;"><b>qualify</b>=yes</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace;"><b>qualifyfreqok</b>=25000</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace;"><b>tos</b>=0x18</span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<span style="color: red;">
Note: The IAX2 trunk is responsible for redirecting calls from this server to the other.</span><br /><br />
</li>
<li><div class="separator" style="clear: both; text-align: left;">
Setup a new inbound route under Connectivity <span style="background-color: white; color: #333333; font-family: "georgia" , serif; font-size: 13px; line-height: 20.7999992370605px;">→</span> Inbound Routes <span style="background-color: white; color: #333333; font-family: "georgia" , serif; font-size: 13px; line-height: 20.7999992370605px;">→ </span>Add Incoming Route:</div>
<br />
<span style="font-family: "courier new" , "courier" , monospace;"><b>DID Number:</b> Your SIM card number with country code (with a plus sign at the beginning)<br /><b>CallerID Number:</b> Your personal cell phone number<br /><b>Set Destinations:</b> Trunk and your recently created IAX2 trunk.</span><br />
Note: This is the route responsible to redirect an inbound call on your local dongle over the IAX2 trunk and then to your remote server.<br />
</li>
</ol>
<div>
If you noticed any omitted fields in the above configurations, it's because I didn't fill with anything or it's not important. I also did some extra work on Claning the SIM card memory for SMS every once in a while, I set a static IP for the OpenVPN so each server can always see each other, an additional service to check my credit balance every month and so and so forth. If you also want details like that please let me know in the comments :-) </div>
<div>
<br />
That's it! You did it! If you need more help setting up anything else please let me know in the comments of this post. Good luck and have fun! :-)</div>
</div>
Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com4Berlin, Germany52.520006599999988 13.40495399999997552.210736099999991 12.759506999999974 52.829277099999985 14.050400999999976tag:blogger.com,1999:blog-6671335388274867168.post-47295033214729783582014-01-09T00:00:00.000-02:002014-01-23T11:01:07.672-02:00Vendo: Placa Beagleboard rev C4 + Placa de expansão BeagleBuddy Zippy<b>tl;dr:</b> R$200,00 por fora do Mercado Livre. Interessados deixem contato nos comentários.<br />
<br />
Pessoal, estou vendendo esta placa de desenvolvimento apenas por que os <a href="http://www.linaro.org/" target="_blank">repositórios de software</a> que costumava usar foram descontinuados para este modelo (parou no <a href="http://www.linaro.org/downloads/1203" target="_blank">Ubuntu Server 12.03</a>, ainda da pra instalar e atualizar os pacotes, mas não tem versões mais novas). Apesar disso, é uma placa de baixíssimo consumo de energia, ideal para desenvolvimento de aplicações embarcadas e testes com processadores ARM.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVkvHVajOQkO6YbbaPQt2EGZw-hbvbjxyWG-lvPI3IB2U3vIIzm6l5sUgCQ_xjE9TUQzbd7BPIRyd6PW_aCV701S5c3hMAOH77gJopc6c0iBVEaCB2C0y4dUW5g47AXAhQozfaV6HgRaAT/s1600/IMG_7898.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVkvHVajOQkO6YbbaPQt2EGZw-hbvbjxyWG-lvPI3IB2U3vIIzm6l5sUgCQ_xjE9TUQzbd7BPIRyd6PW_aCV701S5c3hMAOH77gJopc6c0iBVEaCB2C0y4dUW5g47AXAhQozfaV6HgRaAT/s1600/IMG_7898.JPG" height="266" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiYb9TPfJ5gEHfbQ6V3oxg9Cg_XGJ6ip8UvEIkLoxmDgGaWlpyQTVx4eczrsMURtKRpVSZQ7rNy0YIxDCPABxMvAw02yvwrvjZtj6mN-rAaOPLxcil_Hzy4EJG3DeFfvDiTHHHNDh9UuvD/s1600/IMG_7899.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiYb9TPfJ5gEHfbQ6V3oxg9Cg_XGJ6ip8UvEIkLoxmDgGaWlpyQTVx4eczrsMURtKRpVSZQ7rNy0YIxDCPABxMvAw02yvwrvjZtj6mN-rAaOPLxcil_Hzy4EJG3DeFfvDiTHHHNDh9UuvD/s1600/IMG_7899.JPG" height="266" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgch1ruQLCnbs3-dZnbZRFwCe4eHzMRw76oZ21pnDpPcZrKaarg_XpnMtYh7_plQeu80y1zjwRWNDajcc1OirK_iUoBUQ8zfpyS7IqUjLbZFT65D3cVUkhkvrnNitYEbh-McfrKEoyE1_9J/s1600/IMG_7900.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgch1ruQLCnbs3-dZnbZRFwCe4eHzMRw76oZ21pnDpPcZrKaarg_XpnMtYh7_plQeu80y1zjwRWNDajcc1OirK_iUoBUQ8zfpyS7IqUjLbZFT65D3cVUkhkvrnNitYEbh-McfrKEoyE1_9J/s1600/IMG_7900.JPG" height="266" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPRlgj4PrB6c1dwcJuhKNYXDBwh-IcIofz8Kg4mqBu0xa_HZC0q2MQfdNcmVZBa64hUB66-dnTZ6aA6sPPOGQGfOZDsacwKTMkJ19tM_ttgB8HMJnrTD93rPlybmh-RO9OJMeMcgJmeBoD/s1600/IMG_7901.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPRlgj4PrB6c1dwcJuhKNYXDBwh-IcIofz8Kg4mqBu0xa_HZC0q2MQfdNcmVZBa64hUB66-dnTZ6aA6sPPOGQGfOZDsacwKTMkJ19tM_ttgB8HMJnrTD93rPlybmh-RO9OJMeMcgJmeBoD/s1600/IMG_7901.JPG" height="294" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6_0n-6wOz6j34PHkLfI0M7ECBmJtE23xj5eWnDL24G3E-287PES391YjseAMrQzeAH-OYwPyMcMFdpnwWvr6NOKIaEoR10cPQGI_UbSUd808Ba3NaIRfnSAsLN3CPLMh3UYr_eFWNBWJn/s1600/IMG_7903.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6_0n-6wOz6j34PHkLfI0M7ECBmJtE23xj5eWnDL24G3E-287PES391YjseAMrQzeAH-OYwPyMcMFdpnwWvr6NOKIaEoR10cPQGI_UbSUd808Ba3NaIRfnSAsLN3CPLMh3UYr_eFWNBWJn/s1600/IMG_7903.JPG" height="320" width="319" /></a></div>
<br />
<br />
Como mostram as fotos, a <a href="http://beagleboard.org/Products/BeagleBoard" target="_blank">BeagleBoard</a> já está soldada à placa de expansão <a href="https://www.sparkfun.com/products/retired/9731" target="_blank">BeagleBuddy Zippy</a> e ambas estão muito bem cuidadas e funcionando normalmente. Já acompanha a bateria de 3V para o RealTime Clock.<br />
<br />
Junto com as paquinhas vão:<br />
<br />
<ul>
<li>Caixa original</li>
<li>Fonte de alimentação de 5V</li>
<li>Case de acrílico + um case fosco (na época que eu comprei veio um de brinde que eu nunca usei)</li>
<li>Cabo USB-serial</li>
<li>Bateria 3V para o RealTime Clock</li>
</ul>
<h2 style="text-align: center;">
<span style="color: red;">Tudo isso por apenas R$200,00!</span></h2>
<div style="text-align: center;">
(tenho conta no ITAU, aceito PayPal e Bitcoin)</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<b>Interessados: Deixem o contato nos comentários.</b></div>
<div>
<br /></div>
<br />
BeagleBoard rev C4:<br />
<ul style="background-color: white; font-size: 13px; line-height: 19px; list-style-image: url(data:image/png; margin: 0.3em 0px 0px 1.6em; padding: 0px;">
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">Package on Package POP CPU/Memory chip.</span><ul style="line-height: 1.5em; list-style-image: url(data:image/png; list-style-type: disc; margin: 0.3em 0px 0px 1.6em; padding: 0px;">
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">Processor TI OMAP3530 Processor - 720 MHz ARM Cortex-A8 core</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">'HD capable' TMS320C64x+ core (520 MHz up to 720p @30 fps)</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">Imagination Technologies PowerVR SGX 2D/3D graphics processor supporting dual independent displays</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">256 MB LPDDR RAM</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">256 MB NAND Flash memory</span></li>
</ul>
</li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">Peripheral connections</span><ul style="line-height: 1.5em; list-style-image: url(data:image/png; list-style-type: disc; margin: 0.3em 0px 0px 1.6em; padding: 0px;">
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">DVI-D (HDMI connector chosen for size - maximum resolution is 1280×1024)</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">S-Video</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">USB OTG (mini AB)</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">1 USB port</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">SD/MMC card slot</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">Stereo in and out jacks</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">RS-232 port</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">JTAG connector</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">Power socket (5 V barrel connector type)</span></li>
</ul>
</li>
<ul style="list-style-image: url(data:image/png; margin: 0.3em 0px 0px 1.6em; padding: 0px;">
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">Development</span></li>
<ul style="line-height: 1.5em; list-style-image: url(data:image/png; list-style-type: disc; margin: 0.3em 0px 0px 1.6em; padding: 0px;">
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">Boot code stored in ROM</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">Boot from NAND memory, SD/MMC, USB, or serial</span></li>
<li style="margin-bottom: 0.1em;"><span style="font-family: Courier New, Courier, monospace;">Alternative boot source button.</span></li>
</ul>
</ul>
</ul>
<div>
<br /></div>
<span style="font-family: inherit;"><span style="line-height: 19px;">BeagleBuddy Zippy:</span></span><br />
<ul style="background-color: white; color: #333333; font-size: 14px; line-height: 20px; margin: 0px 0px 10px 25px; padding: 0px;">
<li><span style="font-family: Courier New, Courier, monospace;">10BaseT Ethernet </span></li>
<li><span style="font-family: Courier New, Courier, monospace;">Additional SD/MMC interface </span></li>
<li><span style="font-family: Courier New, Courier, monospace;">Battery backed-up Real Time Clock (RTC)</span></li>
<li><span style="font-family: Courier New, Courier, monospace;">Additional RS-232 serial port</span></li>
<li><span style="font-family: Courier New, Courier, monospace;">5V I2C expansion interface.</span></li>
</ul>
Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com0tag:blogger.com,1999:blog-6671335388274867168.post-26005500267706233922013-07-13T01:07:00.001-03:002013-07-13T01:10:29.210-03:00Entendendo a digestão de um bebê.Este post vai ser menos poético e mais técnico que o outro. Se não te interessa saber sobre refluxo e como evitá-lo, pode voltar a ler o seu jornal.<br />
<br />
Pois bem, Carolina estava tendo bastante problema de refluxo, Marcelle vasculhou os confins da deep-web e encontrou o recomendado Dr David Costa, <a href="http://pt.wikipedia.org/wiki/Osteopatia" target="_blank">osteopata</a> - Ele atende na academia <a href="https://pt.foursquare.com/v/companhia-athletica/4bf4ed0194af2d7fad253b72" target="_blank">Companhia Atletica, perto da Avenida dos Bandeirantes em São Paulo</a>. Ele apelou pra tudo o que eu acredito nessa vida, a ciência. Explicou com detalhes de anatomia e química do por que a Carol ter refluxo e por que as vezes isso é normal. Neste post vou tentar entregar um pouco do seu ouro. Mas de qualquer forma, recomendo muito a consulta, médico atencioso, paciente e ouve os pais com seus problemas.<br />
<br />
Antes de tudo um aviso importante: <b>EU NÃO SOU UM PROFISSIONAL DA SAÚDE</b>. Use este post como uma orientação e se tiver problemas procure um médico.<br />
<br />
<b>1) Meu filho mama muito bem no peito esquerdo, relaxa e até dorme; mas no peito direito ela fica inquieto e irritado. Por que isso acontece?</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://upload.wikimedia.org/wikipedia/commons/f/f8/Digestive_system_diagram_pt.svg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://upload.wikimedia.org/wikipedia/commons/f/f8/Digestive_system_diagram_pt.svg" width="288" /></a></div>
Pelo desenho do <a href="http://pt.wikipedia.org/wiki/Aparelho_digestivo" target="_blank">aparelho digestivo</a> acima, nota-se que a saída do estômago é uma caída suave para a esquerda. Ora, se o bebê se inclina para a esquerda (fazendo o contato barriga-com-barriga que as mamães já estão por dentro) para mamar, o estômago é mais facilmente esvaziado, dando uma sensação de alívio ao bebê. O contrário também é válido, se ele se inclinar para o lado direito, o leite vai se acumulando do lado direito do estômago, ele logo fica empapuçado e fica com sentimentos misturados: Ainda tenho fome, mas algo me incomoda = choro. Então a dica aqui é: comece pelo peito direito, quando empapuçar, mande para o esquerdo e deixe ele relaxar.<br />
<br />
<b>2) Meu filho regurgita SEMPRE depois de mamar. O que faço?</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://upload.wikimedia.org/wikipedia/commons/6/63/Estomago.svg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="302" src="http://upload.wikimedia.org/wikipedia/commons/6/63/Estomago.svg" width="400" /></a></div>
<br />
Isso é normal. Existe um músculo circular em formal de anel que separa o estômago do esôfago chamado de <a href="http://pt.wikipedia.org/wiki/C%C3%A1rdia" target="_blank">Cárdia</a>. Este músculo não é forte e nem possui reflexo para fechar ou abrir direito em bebês. Isso significa que, com o estômago cheio de leite - as vezes cheio demais - é natural que alguma coisa saia. Mas atenção, esse refluxo é de cor branca e fluida, assim como o leite. Caso seja em formato de queijo, veja o item 3.<br />
<br />
<b>3) Quando meu bebê regurgita, sai um queijo e ele fica muito irritado e chora muito. O que faço? </b><br />
<br />
Isso tem a ver com o a fermentação do leite no estômago. Leite fermentado nada mais é do que queijo, se ele regurgitar queijo, quer dizer que o tempo entre as mamadas está errado. Ele fica irritado por que o PH dessa solução que fica no estômago é ácido, é só lembrar daquele seu porre que você vomitou até ficar com a garganta ardendo, bem era por causa disso.<br />
<br />
Então, quando ele começar a mamar, ligue o cronômetro e não deixe passar de 30 minutos. Depois de 30 minutos, o estômago já começa a digerir o leite e este começa a virar queijo. Qualquer estímulo na cárdia pode fazer ele regurgitar e isso vai irritá-lo bastante. Depois disso tente respeitar o período mínimo de 2 horas para concluir a digestão antes de dar mais comida.<br />
<br />
Embora bastante explicativas, essas dicas obviamente não são tudo. As vezes, ele vai acordar no meio da noite com dor de barriga, as vezes não vai querer dormir. Nessas ocasiões, boa sorte.<br />
<br />Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com7tag:blogger.com,1999:blog-6671335388274867168.post-47766317017829396072013-07-05T22:21:00.001-03:002013-07-13T01:10:07.726-03:00Junto com a filha, nasce um pai<br />
<div style="color: #222222; font-family: arial; font-size: small;">
Este post começou com o pedido de uma amigo velho para compartilhar as experiências vividas nessas poucas semanas de pai. Comecei a escrever o email e fui achando que poderia virar um post. Pois bem, ca estamos.</div>
<div style="color: #222222; font-family: arial; font-size: small;">
<br /></div>
<div style="color: #222222; font-family: arial; font-size: small;">
Já no sétimo mês fizemos um curso para gestantes. Aprendemos a dar banho, a trocar fralda e tudo mais. Mas obviamente que nem tudo estava previsto no manual. Então aqui deixo algumas das poucas experiências que já passei. Mais informações vocês podem encontrar no <a href="http://mamaeagora.wordpress.com/" target="_blank">blog da Marcelle</a>.</div>
<div style="color: #222222; font-family: arial; font-size: small;">
<br /></div>
<div style="color: #222222; font-family: arial; font-size: small;">
<b>Antes do nascimento, converse com sua filha:</b> Pode parecer bobagem, mas conversar com a barriga da sua esposa é bastante importante. Depois do oitavo mês de gestação, o aparelho auditivo já está formado e ela já vai começar a reconhecer a sua voz. O dia do parto vai ser a pior experiência da vida dela, vai sair daquele quentinho e escurinho pra ir pra um ambiente claro e gelado na mão de um monte de gente estranha. Ter uma voz familiar como referência é o diferencial para ela manter a calma e não deixar a experiência tão traumatizante assim.</div>
<div style="color: #222222; font-family: arial; font-size: small;">
<br /></div>
<div style="color: #222222; font-family: arial; font-size: small;">
<b>Depois do nascimento, converse com a sua filha também: </b>Sempre que for trocar a fralda, dar banho ou botar pra dormir, converse com sua filha. "Filha, vou trocar sua fralda, ela não pode ficar suja. Vou tirar seu casaquinho agora..." E lembre-se: SEM BABY TALK. Voz normal, ela tem que reconhecer a sua voz. Claro que eles ainda não entendem, mas ouvir a voz do pai ou da mãe é algo mágico que acalma.</div>
<div style="color: #222222; font-family: arial; font-size: small;">
<br /></div>
<div style="color: #222222; font-family: arial; font-size: small; text-align: right;">
<i>Depois de adulta, continue conversando. Mas isso a gente já sabe. :)</i></div>
<div style="color: #222222; font-family: arial; font-size: small; text-align: right;">
<br /></div>
<div style="color: #222222; font-family: arial; font-size: small;">
<b>Rotina é MUITO importante:</b> Bebês não sabem o que é dia e nem o que é noite, tenha uma rotina clara. De dia abra as janelas, faça barulho e acorde o bebê a cada duas horas para mamar. Se não acordar só com estímulos, tire a roupa, eles sempre acordam assim. A noite, diminua o ritmo, abaixe o volume das coisas e não deixe tantas luzes acesas. Ensine que é hora de dormir. Dê banho sempre no mesmo horário, arrote e bote no berço. É uma receita quase infalível.</div>
<div style="color: #222222; font-family: arial; font-size: small;">
<br /></div>
<div style="color: #222222; font-family: arial; font-size: small; text-align: right;">
<i>Parece que no começo você vai morrer, que não vai dormir nunca mais, que ela acorda a noite inteira e acabou tudo. SIM. Mas passa. E não demora. A <a href="http://instagram.com/p/bUlKhFhpLh/" target="_blank">Carol</a> já está acordando apenas UMA vez por noite.</i></div>
<div style="color: #222222; font-family: arial; font-size: small; text-align: right;">
<br /></div>
<div style="color: #222222; font-family: arial; font-size: small;">
<b>Bebês choram por motivos simples de desconforto:</b> Ou é fome, ou está com fralda suja ou está com calor ou com frio. Se você verificar todos esses fatores e estiver tudo OK, então é hora de levar ao hospital. Bebês recém nascidos não são manhosos, nem mal acostumados nem malandros - eles ainda não aprenderam o que é isso. Se chorar é por que tem algo de errado mesmo.</div>
<div style="color: #222222; font-family: arial; font-size: small;">
<br /></div>
<div style="color: #222222; font-family: arial; font-size: small;">
<b>Na hora de dormir: </b>Não deixe dormir no colo pra depois colocar no berço, é importante que ela aprenda a dormir sozinha e no berço. Do contrário sim, você vai estar mal acostumando sua filha.</div>
<div style="color: #222222; font-family: arial; font-size: small;">
<br /></div>
<div style="color: #222222; font-family: arial; font-size: small;">
<b>E o que eu descobri sendo pai? </b>Bem, aprenda a se respeitar também. Você não vai nascer pai, vai aprender. Errar não vai o tornar a pior pessoa do universo, com calma a gente chega lá :)<br />
<br />
Bibliografia recomendada:<br />
Os Bebês e suas mães - D. W. Winnicott.<br />
A encantadora de bebês - Tracy Hogg.</div>
Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com0tag:blogger.com,1999:blog-6671335388274867168.post-81675602443435689562012-12-20T23:46:00.000-02:002012-12-20T23:46:08.104-02:00Amigo Blogueiro 2012<div style="text-align: justify;">
Confesso que não sei o que escrever pro meu amigo secreto, nem o conhecia antes do evento e tive que pesquisar <strike>MUITO</strike> (cof cof), olhar no <a href="https://www.google.com.br/search?q=Luiz+Gadetto&oq=Luiz+Gadetto&aqs=chrome.0.57j62l3.962&sugexp=chrome,mod=19&sourceid=chrome&ie=UTF-8#hl=pt-BR&tbo=d&sclient=psy-ab&q=Luiz+Gadetto&oq=Luiz+Gadetto&gs_l=serp.3..0i30.277983.278228.1.278443.2.2.0.0.0.0.168.332.0j2.2.0...0.0...1c.1.Ecy_X922aVY&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&bvm=bv.1355534169,d.eWU&fp=34fb01d2970cafe8&bpcl=40096503&biw=1680&bih=925" target="_blank">google</a> pra poder escrever algo legal sobre ele. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Poise bem! Ele comanda o blog <a href="http://franquiasbaratasdesucesso.com/" target="_blank">Franquias Baratas de Sucesso</a> e da dicas bastante espertas para quem quer abrir uma franquia, começar um trampo novo e quem sabe até uma vida nova. Posts ágeis direto ao ponto sem rodeios. Já aproveitei pra me antenar e entender melhor o <a href="http://franquiasbaratasdesucesso.com/franquia-definicao-e-conceito-o-que-e-franquia/" target="_blank">conceito correto</a> do termo franquia, anotei também as <a href="http://franquiasbaratasdesucesso.com/10-franquias-baratas-de-se-investir/" target="_blank">10 Franquias Baratas de se investir</a>. Ótimas dicas.<br />
<br />
Mas chega de business, direto do Instagram dele tem várias fotos belas de <a href="http://instagram.com/p/TZLWYtFyEd/" target="_blank">por do sol</a> direto de Belo Horizonte, que é a cidade onde mora. E na mesma página onde tem as lindas paisagens mineiras, tem também os gadgets todos desmontados (opa, cheguei na minha praia). Ah eu queria ter a coragem desse rapaz pra abrir e ver a anatomia dos meus devices de perto :-)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://instagram.com/p/TDtPkDlyK9/" target="_blank"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib6dVFF58cZhsxCLugUdieWBtRbh4gCscV85zMTgtDR3TbejyW8R0oYWmURh2wkv0Hbl_NUY-2QE-I0Dp0erugO-3nJnTvstskrf8S06fulWY12x5xqgK5ijWLMbyrpvwXjoeEzHIxN-gE/s320/9d82cc0a42ce11e29ae122000a1f9a03_7.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<i>#Samsung #Galaxy #SII</i></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://instagram.com/p/S9IztllyO3/" target="_blank"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwzdtZ0DOlLKQn8StHB3t39Kf1rEqKv5PCI2XV_R1WhsFIwtACT5Uk15qxsxrLRqWJD2qOWcBQuo-zz-1vflCcYyrBC5qo49ferouzpSVdaSee7rBb9T6tbgNyZilr65TfCtOUzS32Ch9Q/s320/63851ff640cd11e29a0d22000a9f1320_7.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<i>Keep focused! Galaxy SII disassembly.</i></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Amigo secreto, Luiz Gadetto, prazer conhecê-lo. Vou seguir pra saber mais das experiências com os devices :-) Feliz natal e ótimo ano 2013 (se existir) Grande abraço!</div>
Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com4tag:blogger.com,1999:blog-6671335388274867168.post-24295577184450124852012-07-13T16:59:00.001-03:002012-07-13T17:00:17.791-03:00Vendo Canon XS e Lente SIGMA 19-200mm<div style="text-align: justify;">
Vendinha do Otubo aberta novamente!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Algum de vocês deve ter visto meu problema com <a href="https://twitter.com/otubo/status/217370488043880449" target="_blank">algumas fraudes no Mercado Livre</a> e ainda um caloteiro que comprou e não pagou. Decidi então tentar vender meu equipamento de fotografia por aqui também. Os preços não são fixos mas sempre podemos negociar, aceitamos qualquer negócio. Então vamos lá:</div>
<ul>
<li>1 lente 18-200mm SIGMA + parasol</li>
<li><b>Preço: R$600,00</b></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3c0TCyTJXt6dBs8erIEzFmiq6lFb5OeUJZbaFdmI8FKSCOr9PDkLcLGqjBvryZnBwFltJ-ULcZUHD2sciSLOoNduKyJ5AgmKN36-_dDbjZ2MCQ0fpulnSwDqZKLTc9UmubYopRcBz0MAm/s1600/IMG_0198.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3c0TCyTJXt6dBs8erIEzFmiq6lFb5OeUJZbaFdmI8FKSCOr9PDkLcLGqjBvryZnBwFltJ-ULcZUHD2sciSLOoNduKyJ5AgmKN36-_dDbjZ2MCQ0fpulnSwDqZKLTc9UmubYopRcBz0MAm/s320/IMG_0198.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid53PhEarOslufZXV8fBB8pvmVpj24WoYGSv1sXmWoiXwELDPR0qxKfLKhV-8e1i0_dBPiuqzgpLbV7oy1SB2T2kiwpiuoaZV8AqBtckZY0UXE88lTHqIn7cXjgzvbe-7LtzDl3zEir_CG/s1600/IMG_0201.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid53PhEarOslufZXV8fBB8pvmVpj24WoYGSv1sXmWoiXwELDPR0qxKfLKhV-8e1i0_dBPiuqzgpLbV7oy1SB2T2kiwpiuoaZV8AqBtckZY0UXE88lTHqIn7cXjgzvbe-7LtzDl3zEir_CG/s320/IMG_0201.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiusnFO45uU5wSJY-f2HR-kYJ_t-yFcA0tIO_8gfULzHqkRDVvEu0ExZvS1AoM0iRckjp96qOTwodm5yzUg8VxzahML7jTCSpK4TUzufRvEWn3BgwQqzjvnv69GGV2lnQ13FvY2cPx4bx3e/s1600/IMG_0202.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiusnFO45uU5wSJY-f2HR-kYJ_t-yFcA0tIO_8gfULzHqkRDVvEu0ExZvS1AoM0iRckjp96qOTwodm5yzUg8VxzahML7jTCSpK4TUzufRvEWn3BgwQqzjvnv69GGV2lnQ13FvY2cPx4bx3e/s320/IMG_0202.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS-JF7sqX4_0wOJlFtrpubMAxD3SUIsWTfyMhZQBxqlyhn5LFMMNEdLOJO2dBmWO-E4p6Nfz2Tg710P262_Mgl6Hs6BxdpyNGx5w-Ny-irCsm79Wzuzy6jWKN60ecEGcx_7gZYr6FKM_Hk/s1600/IMG_0203.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS-JF7sqX4_0wOJlFtrpubMAxD3SUIsWTfyMhZQBxqlyhn5LFMMNEdLOJO2dBmWO-E4p6Nfz2Tg710P262_Mgl6Hs6BxdpyNGx5w-Ny-irCsm79Wzuzy6jWKN60ecEGcx_7gZYr6FKM_Hk/s320/IMG_0203.JPG" width="240" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<br />
<br />
<a name='more'></a><br />
<br />
<br />
<ul>
<li>1 Câmera Canon XS (1000D)</li>
<li>1 lente 18-55mm + filtro zero UV + filtro polarizador</li>
<li>1 cartão de memória de 4GB</li>
<li>1 bolsa Lowepro</li>
<li><b>Preço: R$1600,00</b></li>
</ul>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgupfMtQGdo4GYC_o_MymJVq_caTdPQvoY9tIeFN0WGpRjc3-JAuRXCh_M0gpIyanEFh5kOATCEzJ-00qDFNew68CfvRMrmJ0J-xtq_KgXL__FRfu_cVlT112mWdh-uMZZBmctw8OW7diaH/s1600/IMG_0192.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgupfMtQGdo4GYC_o_MymJVq_caTdPQvoY9tIeFN0WGpRjc3-JAuRXCh_M0gpIyanEFh5kOATCEzJ-00qDFNew68CfvRMrmJ0J-xtq_KgXL__FRfu_cVlT112mWdh-uMZZBmctw8OW7diaH/s320/IMG_0192.JPG" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNyALpOJD180dziowljYzM8N6F2ypNONHLSluIiDcCYSFedNttcFKB7JSHqrSyrl5xqfnyQ9IObxBgJVPe2c_S-MfIfBPzmmqx9wnLoh_7XGdD4EZTdpcWL8Tv9UzzeZLysSbdznoI0teD/s1600/IMG_0193.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNyALpOJD180dziowljYzM8N6F2ypNONHLSluIiDcCYSFedNttcFKB7JSHqrSyrl5xqfnyQ9IObxBgJVPe2c_S-MfIfBPzmmqx9wnLoh_7XGdD4EZTdpcWL8Tv9UzzeZLysSbdznoI0teD/s320/IMG_0193.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU1YjlZfl7rIZfxWo1g83fYW66yWNC5OAbPBhHRBM170ivSJV9HJuSjLPJNGsIMPNyIy8_p-0Nk_5H4f-tukDUE6N7P6vRQgf7C2l_XxaoqU0mEAdvor_eFKBIbHZjBfk7CiVLpNdqTRxi/s1600/IMG_0194.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU1YjlZfl7rIZfxWo1g83fYW66yWNC5OAbPBhHRBM170ivSJV9HJuSjLPJNGsIMPNyIy8_p-0Nk_5H4f-tukDUE6N7P6vRQgf7C2l_XxaoqU0mEAdvor_eFKBIbHZjBfk7CiVLpNdqTRxi/s320/IMG_0194.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidzxAlxVF_9G003ULgpJ6Tfm_or5j8U74FBoAsV6ZYPFTcpzWeFjQFXF320khaGotvAJ1o9m8WdByqEsJokn5vwDQn2WMegpbI1j-pLr5OzQZRSqsszUalfm9eLvhSgAC4kW6dSYD9yF4l/s1600/IMG_0195.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidzxAlxVF_9G003ULgpJ6Tfm_or5j8U74FBoAsV6ZYPFTcpzWeFjQFXF320khaGotvAJ1o9m8WdByqEsJokn5vwDQn2WMegpbI1j-pLr5OzQZRSqsszUalfm9eLvhSgAC4kW6dSYD9yF4l/s320/IMG_0195.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjht9nEfgDkE6a4Yq-vsWoX3TvFrxj1-jchHVyjiSmhEQGvbnQ3atgch8BudA6MHRaHmW_7YawRTtHV-6VghjN0CBPmV8NM_SE-HiCFUZvEvjg28fzww3Ie9YF5TdH3TpxrKmalZbpgpRMK/s1600/IMG_0196.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjht9nEfgDkE6a4Yq-vsWoX3TvFrxj1-jchHVyjiSmhEQGvbnQ3atgch8BudA6MHRaHmW_7YawRTtHV-6VghjN0CBPmV8NM_SE-HiCFUZvEvjg28fzww3Ie9YF5TdH3TpxrKmalZbpgpRMK/s320/IMG_0196.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsunozqom5_iElQfQpj-QJnYQ3M62uaUsmw9sKjyaMZcbq3IP0M8HjcCvpy3IFx_lpkL0Cx9laIDMHELbVl80RgCfxFRFx9PKs6oH_DQbbpOgn4YmhSEADWneeNDcC4P0QOXwbiUf-WGbW/s1600/IMG_0197.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsunozqom5_iElQfQpj-QJnYQ3M62uaUsmw9sKjyaMZcbq3IP0M8HjcCvpy3IFx_lpkL0Cx9laIDMHELbVl80RgCfxFRFx9PKs6oH_DQbbpOgn4YmhSEADWneeNDcC4P0QOXwbiUf-WGbW/s320/IMG_0197.JPG" width="320" /></a></div>
<br />Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com1tag:blogger.com,1999:blog-6671335388274867168.post-83937957444907226532012-02-23T00:37:00.002-02:002012-03-19T11:11:45.562-03:00Flexget & Transmission Daemon downloading your torrents for you<ul>
<li>Do you watch dozens of TV shows and it sucks to download every single one of them?</li>
<li>Do you have trouble on finding torrent files?</li>
<li>Is it hard to keep track which one has new episodes or not?</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6sox_-0KzWk6r6ux26J4LlFHVaKU0FdMiVfeV8xZVDuxvpK7iQ6qZtuiYc-W1-Tufl-xEZ-vEparC9HB5Fl5FNHUWOvIvoswGDwcicDrKZ3zOYHWqV1OB16lbull3n6mJVShvdjptr0R0/s1600/flexget2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="68" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6sox_-0KzWk6r6ux26J4LlFHVaKU0FdMiVfeV8xZVDuxvpK7iQ6qZtuiYc-W1-Tufl-xEZ-vEparC9HB5Fl5FNHUWOvIvoswGDwcicDrKZ3zOYHWqV1OB16lbull3n6mJVShvdjptr0R0/s640/flexget2.png" width="640" /></a></div>
<div>
<br /></div>
<div>
<b><span style="color: red;"><br /></span></b></div>
<div>
<b><span style="color: red;">Well, your problems are finally over!</span></b> By the end of this (pretty cool) straight-forward tutorial you'll have an email at your inbox every time there's a new episode to watch. And there's more! Call now and.. Ok, I got it.</div>
<div>
<br /></div>
<div>
<i><b>Note:</b> I configured this service on my home-based <a href="http://www.ubuntu.com/download/server/download" target="_blank">Ubuntu Server</a> running on a <a href="http://beagleboard.org/" target="_blank">Beagle Board</a> - no arch dependent. In other words, if you want a fully automatic service, you might want to install it on a always-on-computer, not your notebook. </i>:)</div>
<div>
<br /></div>
<div>
Ok, cut the crap. <a href="http://www.youtube.com/watch?v=cbpccXp6Swo" target="_blank">Let's do this!</a></div>
<div>
<br /></div>
<div>
1) <a href="http://flexget.com/wiki/Install" target="_blank">Download and install Flexget</a>. Keep cool, it's easy.</div>
<div>
2) Before configuring flexget, install transmission-daemon:</div>
<div>
<br /></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> root@minivader ~ # sudo apt-get install transmission-daemon</span></div>
<div>
<br /></div>
<div>
and edit the configuration file to look like this: <i>(customize the configuration as you wish and erase the comments in <b><span style="color: red;">red</span></b>)</i></div>
<div>
<br /></div>
<div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">root@minivader ~ # cat /etc/transmission-daemon/settings.json </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">{</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "alt-speed-down": 50, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "alt-speed-enabled": false, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "alt-speed-time-begin": 540, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "alt-speed-time-day": 127, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "alt-speed-time-enabled": false, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "alt-speed-time-end": 1020, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "alt-speed-up": 50, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "bind-address-ipv4": "0.0.0.0", </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "bind-address-ipv6": "::", </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "blocklist-enabled": false, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "blocklist-url": "http://www.example.com/blocklist", </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "cache-size-mb": 4, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "dht-enabled": true, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "download-dir": "/media/deathstar/torrent", </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> <span style="color: red;"><b>change this to your destination folder</b></span></span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "download-limit": 100, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "download-limit-enabled": 0, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "encryption": 1, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "idle-seeding-limit": 30, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "idle-seeding-limit-enabled": false, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "incomplete-dir": "/home/otubo/Downloads", </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "incomplete-dir-enabled": false, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "lpd-enabled": false, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "max-peers-global": 200, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "message-level": 2, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "peer-congestion-algorithm": "", </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "peer-limit-global": 10000, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "peer-limit-per-torrent": 1000, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "peer-port": 51413, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "peer-port-random-high": 65535, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "peer-port-random-low": 49152, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "peer-port-random-on-start": false, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "peer-socket-tos": "default", </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "pex-enabled": true, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "port-forwarding-enabled": false, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "preallocation": 1, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "prefetch-enabled": 1, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "ratio-limit": 2, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "ratio-limit-enabled": false, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "rename-partial-files": true, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "rpc-authentication-required": true, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "rpc-bind-address": "0.0.0.0", </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "rpc-enabled": true, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "rpc-password": "whatever", </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "rpc-port": 9091, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "rpc-url": "/transmission/", </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "rpc-username": "otubo", </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "rpc-whitelist": "*", </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "rpc-whitelist-enabled": true,</span></div>
<div>
<span style="color: red; font-family: 'Courier New', Courier, monospace;"><b> enable all the rpc options above (user & password optional) this is important to make flexget talk to transmission AND access transmission daemon web @ http://localhost:9091</b></span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "script-torrent-done-enabled": false, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "script-torrent-done-filename": "", </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "speed-limit-down": 100, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "speed-limit-down-enabled": false, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "speed-limit-up": 100, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "speed-limit-up-enabled": false, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "start-added-torrents": true, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "trash-original-torrent-files": false, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "umask": 18, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "upload-limit": 100, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "upload-limit-enabled": 0, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "upload-slots-per-torrent": 14, </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> "utp-enabled": true</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">}</span></div>
</div>
<div>
<br /></div>
<div>
<i>Note: Remember <b>NOT</b> to kill transmission-daemon, you need to SIGHUP it in order to reload the configuration. You can either:</i></div>
<div>
<br /></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> kill -HUP pid</span></div>
<div>
<br /></div>
<div>
or</div>
<div>
<br /></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> invoke-rc.d transmission-daemon reload</span></div>
<div>
<br /></div>
<div>
3) Now configure Flexget to look like this: <i>(customize the configuration as you wish and erase the comments in <b><span style="color: red;">red</span></b>)</i></div>
<div>
<br /></div>
<div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">root@minivader ~ # cat ~/.flexget/config.yml </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">presets:</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> global:</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> transmission:</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> host: localhost</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> port: 9091</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> username: otubo</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> password: whatever</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> email:</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> <b><span style="color: red;">change your gmail credentials</span></b></span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> from: youremail@gmail.com</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> to:</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - youremail@gmail.com</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - your_room_mate@gmail.com</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> smtp_host: smtp.gmail.com</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> smtp_port: 587</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> smtp_username: youremail</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> smtp_password: yourpasswd</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> smtp_tls: yes</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> series:</span></div>
<div>
<span style="color: red; font-family: 'Courier New', Courier, monospace;"><b> configure as you wish, plain text, human readable :)</b></span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - The Big Bang Theory</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - House</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - Family Guy</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - How I Met Your Mother</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - The New Girl</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - Grey's Anatomy</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - Private Practice</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - The Secret Circle</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - The Vampire Diaries</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - Hart of Dixie</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - The Walking Dead</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - The Good Wife</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - Switched at birth</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - Once Upon a Time</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - True Blood</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> - Teen Wolf</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">feeds:</span></div>
<div>
<span style="color: red; font-family: 'Courier New', Courier, monospace;"><b> this is where I look for new torrents, you can add yours</b></span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> btchat-vtv:</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> rss: http://rss.bt-chat.com/?group=2</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> btchat-eztv:</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> rss: http://rss.bt-chat.com/?group=3</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> btchat:</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> rss: http://rss.bt-chat.com/?group=1</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> btchat-verified:</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> rss: http://rss.bt-chat.com/?group=230</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> ezrss-latest:</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> rss: http://www.ezrss.it/feed/</span></div>
<div>
<br /></div>
</div>
<div>
4) Now put your flexget into a cronjob:</div>
<div>
<br /></div>
<div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> root@minivader ~ # crontab -l|grep flexget</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> @hourly /usr/local/bin/flexget --cron</span></div>
</div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: inherit;">Now you might want to run:</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> root@minivader ~ # flexget -v</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: inherit;">and check if everything goes fine. Once everything goes smoothly, <span style="color: red; font-weight: bold;">DONE! </span>Now you can LITERALLY sit and watch your server download all the content for you :-)</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;"><b>How it works, for those who like to read the post until the end:</b> cron will run flexget hourly. It will read the RSS from the feed you pointed trying to match the TV Show name. If it matches, flexget will send you an email AND perform an RPC to talk to transmission in order to add the torrent file in the queue for download. You can check the progress in the transmission daemon web @ http://localhost:9091</span></div>
<div>
<br /></div>
<div>
5) Missing points that I leave for you to have some fun:</div>
<div>
<ul>
<li>We should tell transmission-daemon to stop seeding at some point (after it finishes, or after it gets to a certain ratio number would be perfect)</li>
<li>It would be really cool to download each TV show into a separate directory.</li>
<li>AND EVEN COOLER if we could separate the files into Season folders, creating new ones when season changes.</li>
</ul>
<div>
All right, that's it. have fun :)</div>
</div>Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com2tag:blogger.com,1999:blog-6671335388274867168.post-86182950292395462102011-08-16T22:29:00.000-03:002011-08-17T12:47:37.269-03:00Contribute code to an Ubuntu defect with Launchpad and bzr in the RIGHT wayI am writing this post because I had to read <a href="http://wiki.bazaar.canonical.com/BzrGivingBack">some</a> <a href="https://help.launchpad.net/Code/Review">manuals</a> and (wrongly) <a href="https://lists.ubuntu.com/archives/ensemble/2011-August/000295.html">send a patch email</a> to a mailing list to learn how to actually be able to contribute with code to an Ubuntu package. If you need detailed information, please google some <a href="https://help.ubuntu.com/community/ReportingBugs">official documentation</a>. But if you just <b>want to start coding</b>, this is your place, here you'll find the cake recipe to do it.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://launchpad.net/"><img border="0" height="161" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsRXYdlHdamLu3n8N3xDfQ6IJb9F1LUS6r8rES0iBjTzakQvGudIR8lRUMRYrgMOApoCYysIuYydUqAapwG6zm0XcB44r4yJBFCPiCv3DiPd8qJpHXpkN_BYe4STHz756dI-hahonwQZET/s320/lp-lozenge-left.png" width="320" /></a></div><ol><li>Sign up to a <a href="https://launchpad.net/">Launchpad</a> account.</li>
<ol><li>The only really needed information is your username and your <a href="https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair">ssh key</a></li>
</ol><li>Choose a project. <a href="https://launchpad.net/ensemble">Ensemble</a>, for example.</li>
<li>Download the source code:</li>
<ol><li><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mkdir ensemble</span></li>
<li><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">cd ensemble</span></li>
<li><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">bzr init</span></li>
<li><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">bzr branch lp:ensemble master</span></li>
<li><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">bzr branch master bug-whatever</span></li>
<li><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">cd bug-whatever</span></li>
<li><i>CODE! Those bugs won't get fixed itself!</i></li>
<li><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">bzr commit #goto step 6, if needed</span></li>
<li><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">bzr push</span></li>
</ol><li><a href="https://help.launchpad.net/Code/UploadingABranch">Make your branch public</a></li>
<li><a href="https://help.launchpad.net/Code/Review">Make a merge proposal</a></li>
<li>Done!</li>
</ol><div>Now go for it!<br />
<br />
[update] another interesting documentation shared by <a href="https://launchpad.net/~rsalveti">rsalveti</a> today: <a href="http://developer.ubuntu.com/packaging/html/">Ubuntu Packaging Guide</a></div>Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com1tag:blogger.com,1999:blog-6671335388274867168.post-54116861923511250032011-08-09T22:15:00.000-03:002011-08-09T22:15:03.892-03:00Enjoy old SNES games on your Xoom using PS3 controller<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPz0BPMCFUkjMID5rEzz128DZzyEFEhI2aEJIGsTwSWbfxsbUaKBfdNPXnUi06oU20tOylN_9uwETEWqhYB5Ks35NkhXDv6kghmKFcgU5muj3jMbeeWHOQOyZcPnTzRtVRHKXHXtWWkFFv/s1600/061-600x336.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="222" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPz0BPMCFUkjMID5rEzz128DZzyEFEhI2aEJIGsTwSWbfxsbUaKBfdNPXnUi06oU20tOylN_9uwETEWqhYB5Ks35NkhXDv6kghmKFcgU5muj3jMbeeWHOQOyZcPnTzRtVRHKXHXtWWkFFv/s400/061-600x336.jpg" width="400" /></a></div><div style="text-align: center;">(image from <a href="http://www.euandroid.com.br/tutoriais/tutorial-usuario/2011/08/tutorial-como-jogar-com-o-controle-de-playstation-3-no-android/">eu, android</a>) </div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Yes, that exactly what you read. Now you can play SNES games on your Motorola Xoom using your PS3 controller over bluetooth. Also, this tutorial is an adaptation from an <a href="http://www.euandroid.com.br/tutoriais/tutorial-usuario/2011/08/tutorial-como-jogar-com-o-controle-de-playstation-3-no-android/">article at Eu, Android</a> and it's intended to be used on Ubuntu only, if you need to use <a href="http://www.pcstats.com/articleimages/200409/BSOD_2.gif">the other OS</a>, please check the original. The Linux specific information is from a <a href="http://webcache.googleusercontent.com/search?q=cache:xcl-xA1Ot_IJ:https://help.ubuntu.com/community/Sixaxis+sixpair&cd=2&hl=pt-BR&ct=clnk&gl=br&source=www.google.com.br">cached ubuntu wiki</a>, so I'll copy & paste the relevant part here in case it expire in the future. Right, so cut the crap and let's play! :-)</div><br />
<br />
<div style="text-align: justify;">Needless to say, you must have proper root access on your device - <a href="http://www.euandroid.com.br/tutoriais/2011/06/atualizando-o-motorola-xoom-3g-brasileiro/">details for brazilians here</a>.</div><br />
<ol><li><div style="text-align: justify;">Install <a href="https://market.android.com/details?id=com.dancingpixelstudios.sixaxiscompatibilitychecker&feature=search_result">Sixaxis Compatibility Checker</a>, open the application, give root permissions and then a popup message will be shown telling you if your device is supported or not (hopefully yes).</div><br />
</li>
<li>Install required libs: <span style="font-family: "Courier New",Courier,monospace;"><br />
$ sudo apt-get install libusb-dev libusb-0.1-4<br />
<br />
</span></li>
<li><div style="text-align: justify;">Download <a href="https://github.com/otubo/misc/blob/master/sixpair.c">sixpair.c</a> (original also hosted at the ubuntu wiki, I did a copy on <a href="https://github.com/otubo">my github</a>)</div><br />
</li>
<li>Compile it:<br />
<span style="font-family: "Courier New",Courier,monospace;">$ gcc -o sixpair sixpair.c -lusb</span><br />
<br />
<div style="text-align: justify;"> Before running sixpair, you'll need the bluetooth mac addr of your Xoom. The easy way to get it is installing <a href="https://market.android.com/details?id=com.dancingpixelstudios.sixaxiscontroller&feature=search_result">Sixaxis Controller</a> - don't worry, you'll need the app anyway to use the controller. The app will display a message "Local Bluetooth Adderss" with the bluetooth mac addr you'll need.</div><br />
</li>
<li><div style="text-align: justify;">Run sixpair with the Motorola Xoom bluetooth mac addrs you just got as a parameter: </div><span style="font-family: "Courier New",Courier,monospace;"> $ ./sixpair 41:f4:89:6d:41:73</span><br />
<br />
</li>
<li style="text-align: justify;">Open the Sixaxis Controller and follow the onscreen instructions - <b>important note:</b> You'll might need to reboot your Xoom to make it work (I had to)</li>
</ol><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwiDWYxcz77NaZlfV_tEp-rSHsZnquRxyf8Rh2-XiMm17pY8rOfDe67geFP0qt_VJJlomx9PfPYFtVqsudT5VvUyLYvOxSFBgncDEJbha08phlYE1ZfMaPu2wtKHzy7PZCvPm1rzHMBI8w/s1600/hardcore-gamer.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwiDWYxcz77NaZlfV_tEp-rSHsZnquRxyf8Rh2-XiMm17pY8rOfDe67geFP0qt_VJJlomx9PfPYFtVqsudT5VvUyLYvOxSFBgncDEJbha08phlYE1ZfMaPu2wtKHzy7PZCvPm1rzHMBI8w/s320/hardcore-gamer.jpg" width="213" /></a></div><div style="text-align: center;"> <b>NOW I WANNA PLAY!</b></div><div style="text-align: center;">easy... almost there</div><div><br />
</div><div style="text-align: justify;">Install a neat SNES emulator, I choosed <a href="https://market.android.com/details?id=com.explusalpha.Snes9x&feature=search_result">Snes9x EX</a>. Now you have to configure your controller to map the keys the emulator uses: Go to <i>Sixaxis Controller -> Menu -> Preferences -> Input Mapping -> 1st Controller mappings.</i> Since I am using Snes9x EX, I set my mapping like this:</div><div><ul><li>square: A</li>
<li>triangle: S</li>
<li>circle: X</li>
<li>cross: Z</li>
<li>left: Q</li>
<li>right: W</li>
<li>select: SPACE</li>
<li>start: ENTER</li>
<li>power: HOME</li>
</ul><div style="text-align: justify;">This way, for example, Snes9x EX will understand that when you press <i>square</i> you're actually pressing <i>A</i> which means the <i>Y</i> button on a normal SNES controller. Yes, I know, confusing as hell, but works.</div></div><div><br />
</div><div>Now go and have fun :-D</div><div><br />
</div>Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com0Campinas - São Paulo, Brasil-22.9071048 -47.063239100000033-23.0729243 -47.27805010000003 -22.741285299999998 -46.848428100000035tag:blogger.com,1999:blog-6671335388274867168.post-28671266529920761842011-05-15T21:31:00.000-03:002011-08-03T18:15:32.422-03:00Xoom Brasileiro Vivo 3G atualizado (sem querer) pro Android 3.1<div style="text-align: center;">
<br /></div><div style="text-align: justify;">en_US friends: Gonna write this post in pt_BR since this weird update only regards to brazilian devices. But if even you even though have questions, post it and I'll be glad to help :)</div><div style="text-align: justify;">
<br /></div><div><meta equiv="content-type" content="text/html; charset=utf-8"><div style="text-align: justify;">Já adianto que o procedimento que vou descrever aqui <b><span class="Apple-style-span">VIOLA SUA GARANTIA E DESABILITA A FUNÇÃO 3G</span></b>, esse disclaimer é sempre o mesmo, mas não custa falar pra tirar o meu da reta :)</div><div style="text-align: center;">
<br /></div><div style="text-align: justify;"><i>[obs: Desabilitar o 3G, <b>pra mim</b>, não é la grande problema já que eu não tenho plano de dados só pro tablet e uso majoritariamente em casa. Se essa dinâmica se aplica a você, e se você gosta de se meter a besta de atualizar seu</i><i>s devices, então siga em frente]</i></div><div style="text-align: justify;"><i>
<br /></i></div><div style="text-align: justify;"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM13IizdVmdhcH2lWPXQ-gc6BoC1nKgtV2fhosskoG50yvr1M7Qk5OHaW5GEtR4B-XohGZYH0shPqtVU9Oxiy-AAKxB6ygj0geUCyryXZdtrwTZfT2AbNpAB2qD4t7T1F7jfV3ovyYN9Hm/s400/motorola_xoom_3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5636741090121087618" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 280px; " /></div></div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;">Poise, consegui a façanha bizarra de atualizar meu Motorola Xoom brasileiro sem querer. Certo, certo, a idéia era sim rootear e atualizar pro 3.1, mas eu só consegui isso depois de flashar <a href="http://www.google.com.br/search?sourceid=chrome&ie=UTF-8&q=root+xoom">todos os boot[root].img que encontrei</a>. Só depois de quase brickar (e me cagar nas calças) eu decidi reflashar as imagens originais e FÃ: Descubro que a Motorola ainda não liberou as imagens pro modelo MZ605, o 3G brasileiro. Só me restou flashar a <a href="http://developer.motorola.com/products/software/MZ604_HWI69.zip/">imagem do MZ604</a> (que é wifi only e por isso o disclaimer) e qual a surpresa? No dia seguinte tinha atualização OTA disponível pra mim! Yay! <i>[obs: No <a href="http://developer.motorola.com/products/software/">site da Motorola</a> tem sim outras imagens, com suporte a 3G inclusive, mas só as imagens do modelo MZ604 bootaram]</i></div><div style="text-align: justify;"><i>
<br /></i></div><div style="text-align: justify;"><b>[UPDATE 16/maio] Só pra constar, para flashar uma imagem no Motorola Xoom você vai precisar de M$ Windows e seus <a href="http://developer.motorola.com/docstools/USB_Drivers/">Motorola drivers</a>, além do <a href="http://developer.android.com/sdk/index.html">Android SDK</a> (para usar o fastboot). O procedimento para de fato flashar estão no próprio <a href="http://developer.motorola.com/products/software/">site da Motorola</a>.</b></div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;">Mas no fundo no fundo atualizar o tablet era só foguinho de nerd. As atrações legais que a atualização trás (<a href="http://www.google.com/search?hl=en&q=android+market+movies&aq=f&aqi=g10&oq=">filmes no Market</a> e o <a href="http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=google+music&hl=en">Google Music</a>) ainda não estão disponíveis aqui no Brasil ainda.</div>Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com16tag:blogger.com,1999:blog-6671335388274867168.post-27223409293445034632011-04-25T14:19:00.000-03:002011-08-03T18:17:27.485-03:00Using mtpfs as storage device with Motorola Xoom and Ubuntu<div style="text-align: justify;">Meta info: No, I am certainly not going to make review for this device. For this sort of content you can <a href="http://www.google.com.br/search?hl=pt-BR&pwst=1&sa=X&ei=zNq1Tdz4McLpgAeP3ciOBQ&ved=0CCAQvwUoAQ&q=motorola+xoom+review&spell=1&biw=1440&bih=788">find tons of information on the web</a>, one better than another. My post would be yet another in this sea of information :-) INSTEAD, let's learn how to mount it as "mass storage device" on Ubuntu Maverick.</div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBL3V50dnlzN5gRg1RAAMb-zADvAL9Yeg9xgsWLhZ_YeEcC4HZOyWpGGUq7XHBm389sdDKsydLi7gH2cPGuTo05rblqr0qTTxpCTtkXunnWWMZCqsJ7hkOomh4wNJMLqR3MOI27JyKHYMX/s400/motorola_xoom_3.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 280px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5636741796022490658" /></div><div style="text-align: center; "><i>(default image for this post :P)</i></div><div><div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;">This tutorial is needed because the new Android version (3.0 aka Honeycomb) <b>DOES NOT</b> support mass storage device <b>YET</b>. It uses MTP (<a href="http://en.wikipedia.org/wiki/Media_Transfer_Protocol">Media Transfer Protocol</a>). This is not bad at all! In fact, the transfer rates are pretty faster than in usual mount as mass storage.</div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;">The procedure is pretty straightforward, I found a complete guide on <a href="http://forum.xda-developers.com/showthread.php?t=981774">XDA developers forum</a>, which I'll describe here in short words:</div></div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;"><b>1) Install <span class="Apple-style-span">mtpfs</span> package on Ubuntu:</b></div><div style="text-align: justify;"><span class="Apple-style-span">otubo@vader ~ $ sudo apt-get install mtpfs</span></div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;"><b>2) Create new rules in udev for the Xoom:</b></div><div><div style="text-align: justify;"><span class="Apple-style-span">otubo@vader ~ $ cat > /etc/udev/rules.d/51-android.rules </span></div><div style="text-align: justify;"><span class="Apple-style-span">SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", SYMLINK+="libmtp-%k", MODE="0666"</span></div></div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;"><b>3) Create the mount point and make it yours:</b></div><div><div style="text-align: justify;"><span class="Apple-style-span">otubo@vader ~ $ sudo mkdir /media/xoom</span></div><div style="text-align: justify;"><span class="Apple-style-span">otubo@vader ~ $ sudo chown otubo:otubo /media/xoom</span></div></div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;"><b>4) Configure your <span class="Apple-style-span">/etc/fstab</span> to mount it automatically by adding this line:</b></div><div style="text-align: justify;"><span class="Apple-style-span">mtpfs /media/xoom fuse user,noauto,allow_other 0 0</span></div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;"><b>5) Uncomment the option <span class="Apple-style-span">user_allow_other</span> on the fuse configuration file at <span class="Apple-style-span">/etc/fuse.conf</span></b></div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;"><b>6) Add yourself to the fuse group.</b></div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;"><b>7) Reboot, plug your Xoom in and click "xoom" on the "Places" menu on your Ubuntu. Simple as that :)</b></div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;">BUT, if you face any problems, like <b>"Transport endpoint is not connected"</b>, you may need to reinstall mtpfs from a different version. This sort of error is a bug on mtpfs, it <b>segfaults</b> when trying to mount/access it. So I installed from <a href="https://launchpad.net/ubuntu/natty/+package/mtpfs">Natty's repository</a> and everything worked fine :) <b>BUT</b>, if you're reading this post after the <a href="https://wiki.ubuntu.com/NattyReleaseSchedule">Natty's release</a>, you probably won't need to worry about this.</div></div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;"><b><span class="Apple-style-span">[IMPORTANT UPDATE - May/3/2011]</span></b></div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;">Later on I figured out that even with Natty's version of the mtpfs I was getting a <b>segfault</b> when trying to mount/access the device. So, I <a href="http://www.adebenham.com/mtpfs/">downloaded the source code from the maintainer's page</a>, compiled and now EVERYTHING is working pretty fine. Thank God :) It's important to notice that the segfault is on the mtpfs package and <b>not in libmtpfs</b> (which I also tried to uninstall and install from source). If you need to mess with your system (install from source and not from repository) always try to mess as little as possible :)</div><div style="text-align: justify;">
<br /></div><div style="text-align: justify;"><meta equiv="content-type" content="text/html; charset=utf-8"><b><span class="Apple-style-span">[IMPORTANT UPDATE 2 - same day]</span></b></div><div style="text-align: justify;"><b><span class="Apple-style-span">
<br /></span></b></div><div style="text-align: justify;">I got a segfault <b>AGAIN</b>. Trying to reproduce all the steps I figured out that I had to <b>REBOOT</b> my Motorola Xoom to make it work with the same setup. Looking forward to have a CyanogenMod ROM for my device. Sigh. :-(</div>Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com8tag:blogger.com,1999:blog-6671335388274867168.post-73583274036205112272010-12-11T16:45:00.000-02:002011-08-08T22:16:07.461-03:00GasFinder hits Android Market<div style="text-align: justify;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN6nwCMN7NQ-3G8HCidvVGc3P15HDZicB09QtdFRbLtefvAHgyn5VcwxO81DnVMtm5xmb-XTVWPd59bE-6e6pheOaxDe36_oHucv9MKuwSCPvTx3KsVyjPZAuPh03ZP42RIq4zjaGh3Pmn/s1600/images+%25281%2529.jpg" imageanchor="1" style="float: right; margin-bottom: 10px; margin-left: 10px; margin-right: 0px;"><img alt="" border="0" height="320" id="BLOGGER_PHOTO_ID_5636742534428710802" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN6nwCMN7NQ-3G8HCidvVGc3P15HDZicB09QtdFRbLtefvAHgyn5VcwxO81DnVMtm5xmb-XTVWPd59bE-6e6pheOaxDe36_oHucv9MKuwSCPvTx3KsVyjPZAuPh03ZP42RIq4zjaGh3Pmn/s320/images+%25281%2529.jpg" style="height: 131px; margin-top: 0px; width: 131px;" width="320" /></a>GasFinder, o pequeno embrião que nasceu no <a href="http://www.otubo.net/2010/03/otubo-no-yahoo-open-hack-day-brasil_22.html">Yahoo! Open Hack Day</a> deste ano, passou pelo <a href="http://www.otubo.net/2010/05/gasfinder-no-conip-2010.html">Conip</a> e com <a href="http://www.otubo.net/2010/05/gasfinder-hits-n900.html">versão até pro o Maemo</a> agora ganha uma versão oficial pro Android. Sim meu caro! Duas semanas de intenso trabalho num projeto que está completamente fora do meu universo: Java, Android, JSON e telas em XML. Cá estamos e é com orgulho que apresento o GasFinder. Ainda em sua primeira versão <b>super </b><b>alfa</b>, mas já é oficial para <a href="http://www.blogger.com/market.android.com">Android Market</a>. Você pode procurar por GasFinder no Android Market ou pode scanear o código ao lado :-)</div><div style="text-align: center;"><br />
</div><div style="text-align: center;"><br />
</div><div><div style="text-align: center;"></div><div style="text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAzWIOgCRpcsbdJonczzE6bic_NP6SyGMvUS-SpwyX0M2rmZf5Ub3DKGMi-sNxkeuLeivBnn-Nv4j90oLzJzSvFbYTKtGXNrw-aGEAW7j-EjXxhl4c1Xt_-qE0FvdnCBdancpRpYhS5N4w/s1600/ss-480-0-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAzWIOgCRpcsbdJonczzE6bic_NP6SyGMvUS-SpwyX0M2rmZf5Ub3DKGMi-sNxkeuLeivBnn-Nv4j90oLzJzSvFbYTKtGXNrw-aGEAW7j-EjXxhl4c1Xt_-qE0FvdnCBdancpRpYhS5N4w/s320/ss-480-0-3.jpg" width="192" /></a></div><i>Tela inicial: lista de postos e tipos de ordenação</i></div><div style="text-align: center;"><br />
</div><div style="text-align: center;"><br />
</div><div style="text-align: center;"></div><div style="text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPmWUjRXp4ceZnhXImrXzuKP6P_PP-R9Ngv-r4HfH7d6jBN9q6uL1YB9eq7kZrptF0QOPBVKA7Aa8DbfjaT-HrIbnWiIc-NKN5HW83u-dGjiJL7GPEKKGrdb9uTsRuQMvKdofDtQWKxWBP/s1600/ss-480-1-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPmWUjRXp4ceZnhXImrXzuKP6P_PP-R9Ngv-r4HfH7d6jBN9q6uL1YB9eq7kZrptF0QOPBVKA7Aa8DbfjaT-HrIbnWiIc-NKN5HW83u-dGjiJL7GPEKKGrdb9uTsRuQMvKdofDtQWKxWBP/s320/ss-480-1-3.jpg" width="192" /></a></div><i>Segunda tela: Endereço do posto, preços dos combustĩveis e possibilidade de ligar, ver no mapa e compartilhar nas redes sociais.</i></div><div style="text-align: center;"><i> <br />
</i></div><div style="text-align: justify;">O que é, pra que serve e como funciona? <i>Muito simples comissário!</i> GasFinder é um aplicativo que utiliza de seu local de GPS (ou informação de Wifi) para pesquisar os postos de combustível mais perto de você. O aplicativo é separado em duas partes: A primeira é o back-end (bot) que raspa os dados do site da <a href="http://www.anp.gov.br/">ANP</a> e transfere para um banco de dados, obra prima do Luciano Camilo (ninja e parceiro do projeto) - então, <b>teoricamente</b>, temos as informações de <b>todos</b> os postos de combustível do Brasil. <i>How cool is that!?</i> :-D A outra parte é a aplicação, eu chamo uma URL com parâmetros de latitude e longitude e recebo um JSON com todas as informações dos postos da região. Da pra ordenar por preço, por distância, ver no mapa, compartilhar e ligar pro posto. </div><br />
<div style="text-align: justify;"><i> <br />
</i></div><div style="text-align: justify;"><i><span class="Apple-style-span" style="font-style: normal;">Um dos objetivos de lançar esta versão *agora* era para participar do concurso <a href="http://www.androidlab.com.br/2010/">Android Lab</a> da Huawei que encerrou as inscrições dia 10/dez. Bem, nem precisa dizer, aplicativo <a href="https://github.com/otubo/GasFinder">open source</a>, ainda bastante bugado, então... <a href="https://github.com/otubo/GasFinder/issues">Reportem bugs</a>, <a href="mailto:eduardo.otubo@gmail.com">mandem emails</a>, dêem sugestões e feedbacks! :-)</span></i></div><div style="text-align: justify;"><i><span class="Apple-style-span" style="font-style: normal;"> <br />
</span></i></div><div style="text-align: justify;"><i><span class="Apple-style-span" style="font-style: normal;">Special thanks to: <a href="http://www.meusgastos.com.br/meuspostos/">Luciano</a> (partner no projeto, cuidou de toda a parte de back-end e garimpagem de dados), <a href="http://desalto.blogspot.com/">namorada</a> (que me aguentou por algumas semanas sem dormir direito), <a href="http://twitter.com/#%21/guilhermeprado">PradoG</a> (que teve saco pra me ajudar com Java) e <a href="http://twitter.com/#%21/felipefedel">Felipe Fedel</a> (que tem as manhas de integrar Java e JSON). Thank you all, bros :-)</span></i></div><div style="text-align: justify;"><i><span class="Apple-style-span" style="font-style: normal;"> <br />
</span></i></div><div style="text-align: justify;"><span class="Apple-style-span"><b>[update]</b><span class="Apple-style-span" style="font-style: normal;"> Para quem estranhamente não está conseguindo instalar do Android Market, aqui vai o </span><a href="http://dl.dropbox.com/u/3660159/GasFinder.apk" style="font-style: normal;">link direto para GasFinder no meu Public do DropBox</a><span class="Apple-style-span" style="font-style: normal;">. Qualquer problema, por favor, me avisem nos comentários.</span></span></div></div>Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com19tag:blogger.com,1999:blog-6671335388274867168.post-45011360626531123732010-08-18T15:59:00.000-03:002011-08-08T22:22:17.548-03:00[VENDO] Asus eeePC 1005HAen_US: Non Brazilian folks, I am just selling my netbook and since I don't ship to other countries, I'll write only in pt_BR :-)<br />
<br />
Eu gosto deste device, gosto mesmo dele. Mas preciso levantar alguns fundos pra minha viagem pra Londres em outubro. Mando por sedex na caixa original com manuais e CDs. Só não tem Windows, quem comprar se vira pra baixar uma cópia <span style="font-style: italic;">legalizada</span>, mas se quiser já mando com Ubuntu 10.04 :-)<br />
<br />
<div style="text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8gHQApIEwLrEE1FsJPk3LZPWB7omslRKdDS48ScsMSPN2ZPvWM7MQV9ep-Os-nTmPctIfgJGf9LlGUbaCVPd4DT4VnEVDhl7oWoOM9GC_y0kCTUDyyTdYiFminjHz-L51wpWpnkKiJ5RM/s1600/asus_eee_pc_1005ha.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="276" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8gHQApIEwLrEE1FsJPk3LZPWB7omslRKdDS48ScsMSPN2ZPvWM7MQV9ep-Os-nTmPctIfgJGf9LlGUbaCVPd4DT4VnEVDhl7oWoOM9GC_y0kCTUDyyTdYiFminjHz-L51wpWpnkKiJ5RM/s320/asus_eee_pc_1005ha.jpg" width="320" /></a></div><br />
<div style="font-style: italic; text-align: center;">Asus eeePC 1005HA, black piano</div></div><br />
<br />
<a href="http://www.engadget.com/2009/06/23/asus-eee-pc-1005ha-hands-on-and-impressions-dont-post-or-you-wil/">Asus eeePC 1005HA</a>, preto, acabamento "black piano":<br />
<ul><li>Idade: 6 meses de uso, novinho :-)<br />
</li>
<li>Processador: Intel Atom Dual Core, 1.6Ghz cada core</li>
<li>RAM: 1GB</li>
<li>HD: 500GB (sim, eu copmrei um HD maior pra tuchar meus filmes e músicas)</li>
<li>Bateria: nominalmente 8 horas, mas nos meus testes já consegui 5h.<br />
</li>
<li>O trivial: Webcam, leitor de cartão, wifi, bluetooth, 3 USBs e saída VGA.<br />
</li>
<li>Acessórios: Acompanha caixa original, papelada original, cabo de energia original e <a href="http://www.fnac.com.br/case-para-netbook-7-10-vax-preto-e-laranja-FNAC,,informatica-549003-8492.html">case de neoprene</a><a href="http://www.fnac.com.br/case-para-netbook-7-10-vax-preto-e-laranja-FNAC,,informatica-549003-8492.html"> que comprei na Fnac</a>.<br />
</li>
<li>Preço: R$1.000,00 e ele é todo seu :-)</li>
</ul>Se quiser negociar e tirar dúvidas mande email para eduardo ponto otubo arroba gmail ponto com.Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com1tag:blogger.com,1999:blog-6671335388274867168.post-86622227310692243372010-07-22T15:27:00.000-03:002010-07-22T15:43:11.228-03:00FISL11 lectures presented, time to enjoy the party<div style="text-align: justify;">Two lectures, two days, hard work and my nerves eating me alive. Not easy to speak on a such huge event like FISL. A lot of experience acquired but I am not planning to return to stage soon :) But of course, very happy to spread the word of two projects I like so much: <a href="http://libvirt.org/">Libvirt</a>, which I've been working on for about two years, and <a href="http://deltacloud.org/">DeltaCloud</a> so young and so promissing! Here I post both of presentations. Thanks for all the comunity for the help :-)</div><div style="text-align: justify;"><br /></div><div><br /></div><iframe width="100%" height="560px" frameborder="0" src="http://docs.google.com/gview?a=v&pid=explorer&chrome=false&api=true&embedded=true&srcid=0B67FxRV5aa7_NzI4MmRiZjgtOTcwZS00NjdiLWFmYzItZDZkYzJlYjVmOTk5&hl=en"></iframe><br /><br /><div><br /><iframe width="100%" height="560px" frameborder="0" src="http://docs.google.com/gview?a=v&pid=explorer&chrome=false&api=true&embedded=true&srcid=0B67FxRV5aa7_NzdkMjQ5ZTctNTU2YS00NmE4LTk0MjMtNWQ4OTgyMTFhYTI3&hl=en"></iframe><br /><br /><br /><div>And now time for a little fun. Watch some good lectures, get some free coffee and enjoy the cold weather :-)</div></div>Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com2tag:blogger.com,1999:blog-6671335388274867168.post-27704389186087826302010-06-26T13:28:00.000-03:002011-08-08T22:24:28.054-03:00Libvirt-0.8.2 is out. IBM pHyp driver now supports IVM and storage management<div style="text-align: justify;"><a href="https://www.redhat.com/archives/libvir-list/2010-July/msg00101.html">Libvirt-0.8.2 is finally out</a>. New pHyp features are now available :-) I've been working hard for the last couple of weeks to finish all the support for the IVM, <a href="http://www.ibm.com/developerworks/wikis/display/virtualization/IVM">IBM Integrated Virtualization Manager</a>. Now the phyp driver is able to manage both HMC/VIOs and IVM virtualized systems. Also, another big feature that is now available is the storage management. The whole stack of storage (pools and volumes) can now be managed with Libvirt.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBhDTrrQIzFlvmpAezKacJcHKTDg5YUBFLSkyeiFF8wxxesoYdyp0KoY141YZ7GJ4IBAb0ri3Y6gUKbTtPGr8IpkJgtu9-Kue6NG-tabqHgoszk2fCEgUmcwPKrkI_gdDIRuk88y_hvseo/s1600/libvirtLogo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBhDTrrQIzFlvmpAezKacJcHKTDg5YUBFLSkyeiFF8wxxesoYdyp0KoY141YZ7GJ4IBAb0ri3Y6gUKbTtPGr8IpkJgtu9-Kue6NG-tabqHgoszk2fCEgUmcwPKrkI_gdDIRuk88y_hvseo/s320/libvirtLogo.png" width="320" /></a></div></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">I couldn't get to this without the help of Eric Blake (from Red Hat), helping reviewing my patches and Brian King (from IBM), helping me understand the whole world of IBM virtualization . Thank you, guys :)</div>Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com0tag:blogger.com,1999:blog-6671335388274867168.post-36858352987877961502010-06-26T12:31:00.000-03:002011-08-08T22:26:06.612-03:00Otubo at FISL 11: DeltaCloud and Libvirt on the way!<div style="text-align: justify;">Great news from the south, my two lectures were approved for the next version of FISL, International Forum of Free Software (acronym is in pt_BR). Hoooray! \o/</div><div style="text-align: justify;"><br />
</div><div style="text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8LCwBibJM1cJ3y30w3KlI2d4Up1aK4Sc1rgNj96ppDkDkKcfo05SZJfOZy5wA1NoNoiB9eh27WFg26TZQREcQm9Alm2aiBmyKSWQ7LbGL7TK9NNG27CEpT7WYK_Ira2pq92rFp3rJiBLY/s1600/fisl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8LCwBibJM1cJ3y30w3KlI2d4Up1aK4Sc1rgNj96ppDkDkKcfo05SZJfOZy5wA1NoNoiB9eh27WFg26TZQREcQm9Alm2aiBmyKSWQ7LbGL7TK9NNG27CEpT7WYK_Ira2pq92rFp3rJiBLY/s320/fisl.png" width="320" /></a></div></div><div style="text-align: center;"><br />
</div><div style="text-align: justify;">I've submitted two papers for the congress. One lecture is about <a href="http://deltacloud.org/">DeltaCloud: </a><i><a href="http://deltacloud.org/">Many Clouds. One API. No Problem</a>.</i> And the other one will be about <a href="http://libvirt.org/">Libvirt: <i>The virtualization library</i></a>. I am counting with the help of both projects maintainers in order to get a great work for the projects.</div><div><br />
</div><div>Wish me luck, hope I can make a great presentation for you all.</div><div><br />
</div><div>See you there! :-)</div>Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com0tag:blogger.com,1999:blog-6671335388274867168.post-86905270328508604832010-05-26T23:39:00.000-03:002011-08-08T22:27:23.960-03:00GasFinder no CONIP 2010<div style="text-align: justify;">Gas Finder esteve no <a href="http://www.conip.com.br/Conip2010/WebHome">CONIP 2010</a> esta tarde. Agradeço novamente o convite da <a href="http://twitter.com/danielabsilva">Daniela</a> e do <a href="http://twitter.com/markun">Pedro Markun</a> :-) CONIP é um dos miores eventos sobre uso de tecnologia na gestão pública, muitas pessoas engravatadas do governo ou não. É estranho estar em um evento técnico-não-técnico.</div><div style="text-align: justify;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0y3M_vcAeIUbivyHoSgi4lX92_z4v5-nxmbPdTh4iKBwu6-nAh261HBa1vcmr3WpeFydOq5QTVBMSLvopaA7jWniMbowS4e6P7rCtRaamVZRsn-kIXEeKH2hbneUqjS-TcsFmS2Yp9hbt/s1600/1273520537internet_conip_2010.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0y3M_vcAeIUbivyHoSgi4lX92_z4v5-nxmbPdTh4iKBwu6-nAh261HBa1vcmr3WpeFydOq5QTVBMSLvopaA7jWniMbowS4e6P7rCtRaamVZRsn-kIXEeKH2hbneUqjS-TcsFmS2Yp9hbt/s320/1273520537internet_conip_2010.jpg" width="320" /></a></div>Foram 10 os desenvolvedores convidados, aqueles que tiveram <a href="http://gc.blog.br/2010/03/22/o-open-hack-day-br-2010-foi-sensacional/">projetos premiados no Yahoo! Open Hack Day</a>. Fui representando o <a href="http://github.com/otubo/GasFinder">Gas Finder</a>, gostaria de ter falado mais, 5 minutos é crueldade. Eu sei que não tinha muito o que explicar mas acho que pelo menos uns 10 minutos já estaria de bom tamanho.</div><div style="text-align: justify;"><br />
O saldo positivo é o de sempre: Social network. Bons contatos (técnicos ou não), sempre são bem vindos. Re-conhecer aqueles que você só conhecia de twitter ou de IRC é bem legal.</div>Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com1tag:blogger.com,1999:blog-6671335388274867168.post-77553113457477474092010-05-17T02:57:00.000-03:002010-05-19T02:28:04.205-03:00GasFinder hits N900!<div style="text-align: justify;">I am proud to announce that this weekend <a href="http://github.com/otubo/GasFinder">GasFinder</a> hit the <a href="http://maemo.org/">Maemo</a> Fremantle system. It was a great hacking time this weekend, my girlfriend lovely understood (thank you!). And finally I could complete the port and all that packaging stuff to <a href="http://github.com/otubo/GasFinder/commit/77ba3be0419dd1a708a1f9b0ed6b50f85e6b2ac7">release the first working version of GasFinder this early monday</a> :-)</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">This great effort is mostly because of the "<a href="http://blog.esfera.mobi/transparencia-hackday-edicao-virada-hacker/">Virada Hacker</a>" that happened in SP/Brazil this weekend. The main focus of the event is to work on public government data. And what are the odds, great time to go back and hit some gas on GasFinder. :P</div><div style="text-align: justify;"><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rQp7go4-4pw/S_LEHbSofaI/AAAAAAAAAvw/W0okEE5GnP4/s1600/menu.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://2.bp.blogspot.com/_rQp7go4-4pw/S_LEHbSofaI/AAAAAAAAAvw/W0okEE5GnP4/s400/menu.png" alt="" id="BLOGGER_PHOTO_ID_5472652129072610722" border="0" /></a>GasFinder still without its own icon<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rQp7go4-4pw/S_LEURjEBLI/AAAAAAAAAv4/EY6exW3-fWY/s1600/mainmenu.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://2.bp.blogspot.com/_rQp7go4-4pw/S_LEURjEBLI/AAAAAAAAAv4/EY6exW3-fWY/s400/mainmenu.png" alt="" id="BLOGGER_PHOTO_ID_5472652349795468466" border="0" /></a>The list of gas stations after the automatic search and the price of gas<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rQp7go4-4pw/S_LEhwbaI8I/AAAAAAAAAwA/DJgekuAdo48/s1600/detailedscreen.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://2.bp.blogspot.com/_rQp7go4-4pw/S_LEhwbaI8I/AAAAAAAAAwA/DJgekuAdo48/s400/detailedscreen.png" alt="" id="BLOGGER_PHOTO_ID_5472652581423162306" border="0" /></a></div><div style="text-align: center;">The detailed screen and all fuel prices listed<br /></div><br /></div><div style="text-align: justify;">Obviously we have a great list of TODO's ahead of us, UI, mapping, and interactions with social networks would be fine. And now, I think it is already more than a proof of concept :) <a href="http://github.com/otubo/GasFinder/downloads">You can download the deb package right from the repository.</a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Enjoy! :-)</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">update: Now we changed to <a href="http://github.com/otubo/GasFinder">GiHub</a>, hooray! \o/</div>Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com3tag:blogger.com,1999:blog-6671335388274867168.post-65892594985089731632010-04-14T16:28:00.000-03:002011-08-08T22:33:51.384-03:00Ethernet over USB with N900 and Gentoo<div style="text-align: justify;">Meta: It's been a while since I got my new N900. I sold my old device to <a href="http://twitter.com/klebersouza">Kleber</a> and I acquired the new N900 from <a href="http://twitter.com/etrunko">Etrunko</a>, hell I wanted this gadget. This tutorial is for gentooers only, ubuntuers can connect and use it right away without any changes.<br />
<br />
</div><div style="text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMBWiFBG-9k41xqGiGOU0kk0piP5wRjglW7R6oNA-gSXIPTDWIGJqkvRr4TEp59Q3OXz_EEEA7uRCl8xJClTtYmx9A9Ca7pmUqqUCJPKD2Hzrv39F9E7zIMk8X8LhH7F_crrON0YHveMU6/s1600/nokia_n900_48_lowres.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMBWiFBG-9k41xqGiGOU0kk0piP5wRjglW7R6oNA-gSXIPTDWIGJqkvRr4TEp59Q3OXz_EEEA7uRCl8xJClTtYmx9A9Ca7pmUqqUCJPKD2Hzrv39F9E7zIMk8X8LhH7F_crrON0YHveMU6/s320/nokia_n900_48_lowres.jpg" width="320" /></a></div>Main reference: <a href="http://wiki.maemo.org/N900_USB_networking">http://wiki.maemo.org/N900_USB_networking</a></div><br />
<div style="text-align: justify;">Since that date, I've been playing and hacking around this incredible device. Yesterday I was trying to debug why in hell my bloody bastard wifi connection keeps on dropping so often. Opening a terminal and checking dmesg or /var/log/messages on that tiny little screen was a pain, so I decided to try out the <span style="font-weight: bold;">ethernet over usb</span>.<br />
<br />
You can follow all the <a href="http://wiki.maemo.org/N900_USB_networking">above tutorial</a> on a Gentoo box. The only problem I found was to find the correct modules in my kernel to load - as Gentoo doesn't behave as Ubuntu and loads the whole world in the memory. :P<br />
<br />
So, here it is:<br />
<br />
<span style="font-family: courier new;">otubo@minivader ~ $ lsmod|grep usb</span><br />
<span style="font-family: courier new; font-weight: bold;">usbnet</span><span style="font-family: courier new;"> 17188 1 </span><span style="font-family: courier new; font-weight: bold;">cdc</span><span style="font-family: courier new;">_ether</span><br />
<span style="font-family: courier new;">mii 5212 1 </span><span style="font-family: courier new; font-weight: bold;">usbnet</span><br />
<br />
Find, compile (if not yet) and load these modules. These modules, with the <a href="http://wiki.maemo.org/N900_USB_networking#Host_configuration_on_Debian_Lenny">correct udev rules</a> will create a <span style="font-weight: bold;"><span style="font-family: courier new;">usb0</span> </span>interface on both devices. Make sure the interfaces are configured properly to be on the same network.<br />
<br />
That's it. Now you're able to plug you USB cable and have a full operational network with it. Enjoy! :-D<br />
<br />
<span style="font-weight: bold;">[update]</span> <span style="color: red; font-weight: bold;">DO NOT</span> set a static mac add as said in the original tutorial. In my case, the module <span style="font-weight: bold;">g_nokia</span> didn't load just because of this.</div>Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com2tag:blogger.com,1999:blog-6671335388274867168.post-61634683351271369862010-03-23T23:34:00.000-03:002011-08-08T22:34:48.241-03:00Android 2.1 no Milestone brasileiroJá faz uma semana que instalei o Android 2.1 no Milestone e estou devendo algumas considerações. Ah, só uma observação, instalei exatamente do mesmo jeito que as outras, só mudei a imagem (<a href="http://www.otubo.net/2010/03/atualizando-motorola-milestone.html">já atualizei aquele outro post com o link pro 2.1</a>)<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjE4buruGK7U6SFfR4bDKTEh9vz7XfFxzmRl0VS4sdv5vhyphenhyphenuqe6qRit_PkDUwywM52AOo_1mZRK5rQ0NQrEW9WOmqNt0IuyA0lA_zAJIbPDCGgvYrmlP9oKFvo9pFHjy79LHMK5vHC57mz/s1600/MILESTONE_08_EN.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="314" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjE4buruGK7U6SFfR4bDKTEh9vz7XfFxzmRl0VS4sdv5vhyphenhyphenuqe6qRit_PkDUwywM52AOo_1mZRK5rQ0NQrEW9WOmqNt0IuyA0lA_zAJIbPDCGgvYrmlP9oKFvo9pFHjy79LHMK5vHC57mz/s320/MILESTONE_08_EN.png" width="320" /></a></div><span style="font-weight: bold;">Prós:</span><br />
<div style="text-align: justify;">* Aparentemente mais rápido. O slide entre desktops, o menu de aplicações e a barrinha de avisos tem animações mais naturais e com menos lags.<br />
* Aplicativos novos: No Android 2.1 tem Google Earth liberado, tem widget para Latitude e Google Buzz, bastante prático e útil pra quem usa com frequência.<br />
* Número de desktops configurável, agora dá pra configurar nativamente (sem o Helix) até 9 desktops, tem até uma barrinha com uma bolinha vermelha no topo da tela mostrando em qual desktop você está.<br />
* Live Wallpapers, all those fancy live wallpapers do Nexus One estão nessa atualização.<br />
* Quick Office e Facebook já vem instalado.<br />
* Aplicativos novos: All Videos e Camcorder.<br />
* O relógio do dock agora tem controle de luminosidade por uma barrinha. Agradou.<br />
<br />
<span style="font-weight: bold;">Contras:</span><br />
* A instalação <span style="color: red; font-weight: bold;">APAGA TODOS OS SEUS DADOS</span>. E eu não sabia disso. Cuidado! :-\<br />
* A versão que instalei, a européia, interpreta os números dos contatos como xxx-xxx-xxxx. Isso faz uma bagunça quando a sua lista de contatos inclui números de operadoras e DDD no formato xx xx xxxx xxxx. Isso implica que o android não reconhece mais as chamadas, uma droga.<br />
* Problemas de travamento frequente usando Foursquare, Twidroid e Helix home. Realmente perturbador se você usa com frequência esses aplicativos (eu).<br />
* Ainda tem o problema de não vir pré-configurado as APNs da VIvo. <a href="http://forum.portalandroid.org/viewtopic.php?f=43&t=1648&p=8579&sid=0160c9cdac27a080487851dd6eb64bac#p8579">Esse link diz como configurar</a>, foi por lá que me segui e deu tudo certo com o meu 3G<br />
<br />
Outra coisa que vem me incomodando desde a versão 2.0 - e ainda não foi corrigido - é em relação ao storage. Acontece quando copio grandes quantidades de dados (uma pasta de 2.5GB de músicas, por exemplo), chega num ponto da cópia que meu dá IO Error. O device fica maluco e trava TUDO. Tenho que tirar a bateria pra rebootar. <span style="font-weight: bold;">Hey Google, if you're reading this, PLEASE fix it, ok?</span><br />
<br />
E agora me resta apenas a triste notícia de que vou voltar pro Android 2.0.1, mais notícias em breve aqui ou no meu <a href="http://twitter.com/otubo">twitter</a>.<br />
<br />
Agradecimentos ao <a href="http://twitter.com/rhaydt">Haydt</a> e ao <a href="http://twitter.com/uatafoc">Uatafóc</a> pelas dicas.</div>Eduardo Otubohttp://www.blogger.com/profile/03743510267930204011noreply@blogger.com1