atmega328p (mini at) na linuxu (arduino klon)

Arduino je vrlo popularna platforma za razvoj koja je bazirana na atmelu MCU, kolko je meni poznato kod nas nema da se kupe atmel ploče. Meni je atmel uvek bio simpatičan zbog dobre podrške na linuxu (gcc-avr i avr-libc).

Drugar je našao jedan zanimljiv klon arduina (isti koncept, isti MCU, samo je pločica drugačija) kod naše Mikro Elektronike po prilično pristupačnoj ceni (14eura + PDV). Reč je o mini at pločici, koja se meni čak i više svidja od arduina jer je drastično manja, mana je naravno to što ne mogu da se kače arduino shieldovi.

Incijalno Mikro Elektronika predlaže korišnjenje njihovih alata za razvoj, koji naravno ne postoje za linux. Gledajući uputstvo skontam da koriste arvdude software za programiranje koji postoji i na linuxu. I da je protokol za programiranje stk500 takodjer podržan. Sve bi to trebalo da znači da pločica može vrlo jednostavno da se programira i na linuxu.

Potrebni alati na linuxu su avrdude gcc-avr i libc-avr. Na ubuntu/debianu: apt-get install gcc-avr avr-libc avrdude i malo podešavanja koje sam upakovao u Makefile demo projekat.

Sve što je potrebno uraditi je otpakovati zip fajl (eventualno promeniti serijski port u Makefileu) i uraditi make all.

Posted in elektronika | Leave a comment

Virtualne mrežne labaratorije

Najelegantniji način za testiranje setupa je na virtualnim mašinama, a u slučaju da podignete više njih možete testirati i celu mrežu. Postoje alati koji omogućavaju da se na lak način postavi simulacija mreže i potom igra sa podešavanjima pojedinih mašina/ruterima.

Svi su bazirani na UML (User-mode Linux-u)

Ceo posao možemo uraditi i bez ovakvih programa, ali uz pomoć njih dobijemo vizuelnu preglednost i brže dodjemo do setupa koji želimo da testiramo.

Posted in linux | Tagged , , | Leave a comment

Named pipea (fifo) na androidu

Posto mkfifo() poziv nije dostupan iz java-e na androidu (ili barem meni nije poznato kako). Postoje dva rešenja: pozivanje externe mkfifo komande ili pravljenje C biblioteke koja poziva funkciju i linkovati sa javom (JNI). Drugi način je elegantniji i ali komplikovanije rešenje.

jni/Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

TARGET_PLATFORM := android-3
LOCAL_MODULE := mkfifo
LOCAL_SRC_FILES := mkfifo.c
LOCAL_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)

jni/mkfifo.c:

#include <string.h>
#include <jni.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>

JNIEXPORT jint JNICALL
Java_info_zsteva_fifo_mkfifo( JNIEnv* env, jobject thiz, jstring path )
{
jboolean iscopy;
const char *path_utf = (*env)->GetStringUTFChars(env, path, &iscopy);

int ret = mkfifo(path_utf, 0700);

(*env)->ReleaseStringUTFChars(env, path, path_utf);

return ret;
}

src/info/zsteva/mkfifo.java:

package info.zsteva;

public class fifo {
// JNI
public native static int mkfifo(String path);
static {
System.loadLibrary("mkfifo");
}
}

Smestiti fajlove na adekvatna mesta i u rootu android projekta pokrenuti ndk-build (za kompajliranje je potreban android-ndk-sdk).

Posted in android | Tagged , , , , , | Leave a comment

ssh host aliasi

Ako svakodnevno iz komandne linije pristupate istim mashina, verovatno imate aliase ili male shellscripte kojima pozivate ssh ka tacno određenoj mashinu uz malo kucanja, pogotovo ako za neke od njih je potrehno specificirati port i/ili username. Na taj način se lako odradi ssh, ali opet kad treba scp potrebno je napraviti drugu scriptu…

Zgodno rešenje koje sam skoro video nalazi se u okviru samog ssh-a. U ~/.ssh/config mogu se podesiti svi ovi parametri i pri tome dati posebno ime preko koga mašini sa tim parametrima pristupate bilo da koristite ssh ili scp. Primer:


Host stor01
Hostname office.example.com
User zsteva
Port 2211

Primer kojim se kačim na server sa navedenim parametrima preko prečice stor01. Sada komotno mogu da koristim:

  • ssh stor01 -v
  • scp file1.txt stor01:~/
  • scp stor01:~/file2.txt .

Svaki put tamo gde se pokušavam kačiti na stor01, biće upotrebljeni parametri navedeni u config fajlu.

Kao hostname se može navesti i IP adresa, a uz malo scriptinga se može napraviti da se jednom komandom preklapaju IP adrese u liniji hostname zavisno od toga da li ste u LANu ili pristupate mašini spolja, itd…

Posted in linux | Tagged , , , , , | Leave a comment

InstallShield silent instaliranje programa

Pokušavajući da napravim silent instalaciju jednog programa (instaler programa je prevljen putem InstallShield-a) prekopao sam pola interneta tražeći rešenje. Ispostavilo se da InstallShield ima ugrađeno rešenje za to.

Pošto program uglavnom zahteva neka podešavanja prilikom instaliranja, potrebno je prvo uraditi snimanje parametara. Pokrenite iz direktorijuma gde je instalacija programa setup.exe na sledeći način:

setup.exe /r /f1".\setup.iss"

Prođite proces instaliranja, posle čega će se u trenutnom direktorijumu pojaviti setup.iss u kome je snimljen kompletan proces instalacije, sa svim parametrima.

Na drugi računar je dovoljno prekopirati ceo direktorijum i pokrenuti:

setup.exe /s

Da bi instalacija se kompletno završila sa parametrima koji su snimljeni u setup.iss. Inače fajl je textualni i možete dodatna štelovanja uraditi ručno.

Sledeći korak: kompletna automatizacija instalacije i upgradea softwera uz pomoć wpkg sistema.

Posted in windows | Tagged , , , , | Leave a comment

Slanje SMS-a preko 3G modema

Slanje SMS poruka putem 3G modema koji su danas naširoko dostupni nikad nije bilo lakše.

u ~/.gnokiirc treba ubaciti sledeća podašavanja:
[global]
model = AT
connection = serial
port = /dev/ttyUSB0

I jednostavnom komandom možemo poslati poruku :)
zsteva@acer:~$ echo "tekst SMSa" | gnokii --sendsms 06xxxxxxxx --smscno 1
GNOKII Version 0.6.28
Send succeeded with reference 53!

I to je to. Ništa lakše ovo integrisati u bilo kakvu vrstu scripte.

Probano na modemima Huawei E220 i ZTE MF 622, ali verovatno radi i sa drugim 3g usb modemima.

Naravno, postoji mogućnost i prijema poruka.

Posted in linux | Tagged , , , , , , , , , , | 2 Comments

thundebird 3.1.x na ubuntu 10.04 amd64

Ubuntu 10.04 ima po defaultu 3.0 thunderbird, za koji ne postoje verzije add-on-a koje su mi potrebne. A i zašto nemati noviju verziju :) Pluginovi koje koristim su enigmail (PGP), lightining (calendar) i Google Contacts.

Build 3.1.x postoji u Mozilla Daily PPA repositoriju.
Continue reading

Posted in linux | Tagged | 3 Comments

hetzner dedicate server

Pre neki dan sam uploadovao slike hetzner webpanela na flicker (link). Panel nudi par lepih opcija.

Reverse DNS podešavanje i trafic monitoring sa sve obaveštavanjem (pic).

Reset, (pic) zapravo tri vrste: CTRL-ALT-DEL što bi trebalo da pokrene OS reboot, hardware-reset ili u narodu poznato “na dugme” i ako ni to neće ostaje vam manualni reset (koji radi samo u radne sate, kad tamo ima nekog) i kod koga čevek ode i “išutira mašinu”, što nebi trebalo da često zatreba.

Rescue (pic), e ovim su me kupili kompletno, reč je linux rescue disku koji se bootuje preko DHCP/TFTP i daje vam pristup mašini bez podisanja OSa koji je na njenim diskovima. Neverovatno lepo stvar, i diže baš lep rescue linux sa svim potrebnim alatima. Meni je poslužio odmah, da root particiju ubacim u LVM.

VNC install (pic), pored doborg rescue boota, ovo je skoro nepotrebno, ali zašto da ne. Bilo bi lepo da su se potrudili da pripreme i debian installer disk za VNC. Preko ove opcije se mogu instalirati CentOS, Fedora i openSUSE.

Za 50eura/mesečno se dobije i7-920 mašina (quad core procesor) sa 2x750G SATA diskovima i 8G rama (2000G trafika). Poprilično dobra ponuda. Spec ne deluje ni najmanje loše, mada treba imati na umu da je reč o klasičnom PC tj. da nije reč o nekom nabudženom serveru. Evo osnovnih detalja o hardweru koji se daju videti iz linuxa:

/proc/cpuinfo 8x ovo:

processor : 7
vendor_id : GenuineIntel
cpu family : 6
model : 26
model name : Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz
stepping : 5
cpu MHz : 1600.000
cache size : 8192 KB
physical id : 0
siblings : 8
core id : 3
cpu cores : 4
apicid : 7
initial apicid : 7
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 lahf_lm ida tpr_shadow vnmi flexpriority ept vpid
bogomips : 5346.29
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

lspci:

00:00.0 Host bridge: Intel Corporation QuickPath Architecture I/O Hub to ESI Port (rev 13)
00:01.0 PCI bridge: Intel Corporation QuickPath Architecture I/O Hub PCI Express Root Port 1 (rev 13)
00:03.0 PCI bridge: Intel Corporation QuickPath Architecture I/O Hub PCI Express Root Port 3 (rev 13)
00:07.0 PCI bridge: Intel Corporation QuickPath Architecture I/O Hub PCI Express Root Port 7 (rev 13)
00:14.0 PIC: Intel Corporation QuickPath Architecture I/O Hub System Management Registers (rev 13)
00:14.1 PIC: Intel Corporation QuickPath Architecture I/O Hub GPIO and Scratch Pad Registers (rev 13)
00:14.2 PIC: Intel Corporation QuickPath Architecture I/O Hub Control Status and RAS Registers (rev 13)
00:14.3 PIC: Intel Corporation QuickPath Architecture I/O Hub Throttle Registers (rev 13)
00:1a.0 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4
00:1a.1 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #5
00:1a.2 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #6
00:1a.7 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #2
00:1c.0 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Port 1
00:1c.4 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Port 5
00:1d.0 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #1
00:1d.1 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #2
00:1d.2 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #3
00:1d.7 USB Controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #1
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 90)
00:1f.0 ISA bridge: Intel Corporation 82801JIR (ICH10R) LPC Interface Controller
00:1f.2 SATA controller: Intel Corporation 82801JI (ICH10 Family) SATA AHCI Controller
00:1f.3 SMBus: Intel Corporation 82801JI (ICH10 Family) SMBus Controller
02:00.0 VGA compatible controller: nVidia Corporation GeForce 8400 GS (rev a1)
06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)

hdparm -tT /dev/sda

/dev/sda:
Timing cached reads: 17882 MB in 2.00 seconds = 8951.13 MB/sec
Timing buffered disk reads: 338 MB in 3.02 seconds = 112.02 MB/sec

Sve u svemu ništa posebno, nadam se da će lepo i dugo raditi. :)

Posted in tehnologija | Tagged | Leave a comment

online resize file sistema

Ako koristite LVM za raspodelu prostora na disku na particije, kad vam ponestane prostora na nekoj particiji, a imate ne alociranog prostora na volume grupi, vrlo jednostavno i bez downtimea možete proširiti particiju i file sistem. U mom slučaju reč je o JFS file sistemu, ali i sa drugima bi trebalo na slučan način da funkcioniše.

Povećanje same particije:
resize_fs_1

Povećanje filesistema:
resize_fs_2

Posted in linux | Tagged | Leave a comment

ZTE MF622 na ubuntu

ZTE MF622 za razliku od Huawei E220 nece na ubuntu da proradi “iz prve”. Ali uz malo dodatnog podesavanja radi ;) .

  • Je potrebno instalirati dodatak za udev
    sudo apt-get install udev-extras
    Kojim ćemo dobiti modeswitch potreban da se modem iz mass storage moda prebaci u mod u kome se vidi kao USB serial device.
  • Pošto u scriptama koje instalira ovaj modem nema rule za baš ovaj modem moramo dodati u /etc/udev/rules.d/ fajl 62-mf622.rules sadržaja:

    ACTION!="add", GOTO="mf622_end"
    SUBSYSTEM=="usb", ATTR{bDeviceClass}!="ff" ,ENV{DEVTYPE}=="usb_device", GOTO="mf622_disable"
    SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", GOTO="mf622_disable"
    GOTO="mf622_end"
    LABEL="mf622_disable"
    ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2000", RUN+="modem-modeswitch -v 0x%s{idVendor} -p 0x%s{idProduct} -t option-zerocd"
    LABEL="mf622_end"

    (Da nebi bilo problema sa copy&paste evo za download: 61-mf622)
  • Potom sve što je potrebno da uradite je da prikljućite svoj uredjaj, da saćekate 10-15 sekundi (iz nekog razloga, tek posle tog vremena se uređaj pojavi kao modem) i preko networkmanager appleta podesite konekciju.

Procedura je probana na ubuntu 9.04 x86.

Posted in linux | Tagged | 4 Comments