目前分類:ubuntu 12.04 (22)

瀏覽方式: 標題列表 簡短摘要

因為工作需要,必須要安裝 ubuntu 14.04 for Android 7 build環境
手頭上的電腦為 ACER TM4750-MS2335型號,從網路上下載 ubuntu14.04 iso燒成光碟
由光碟機開機安裝時,卻出現 "EFI/BOOT/fallback.efi"14 錯誤訊息,之後黑畫面,無法安裝 ubuntu 14.04

上網google好一陣子,看起來似乎是ubuntu 11.10之後全面導入 UEFI 的關係
而這台ACER TM4750-MS2335 BIOS超陽春,沒有 bios mode可以設定

再次驗證,如果是 RD需要購買NB的話,千萬不要買ACER,要買 LENOVO(IBM) thinkpad系列,千萬要記住


問了高手同事後,找到一個解決方法

首先,在另外一台 ubuntu 上安裝 unetbootin 來將ubuntu  iso 製作成開機 USB 碟

安裝 unetbootin 方法為:
#sudo spy-get install unetbootin
安裝後執行unetbootin 選擇 64 bit ubuntu 1404 iso檔案,並選擇插入的 usb device



開機USB製作完後,將 USB 上的 EFI 目錄修改為其他名稱,如  OLD_EFI



然後用此 USB碟去開機安裝 ubuntu 1404,就不會出現  EFI/BOOT/fallback.efi 錯誤訊息,與黑畫面

終於成功在 ACER TM4750 上安裝 ubuntu 1404,搞了兩天,快要被 TM4750氣死

文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()


-----------------
linux kernel玩久了,就會有想要有方便debug的方式
是不是能針對某一個檔案做讀取動作,就能讀取某一個硬體元件裡的 register呢?
是否能針對否一個檔案做寫的動作,就能設定某個硬體內部的 register 呢?

既然有了需求,開始查詢資料,發現 debug filesystem 很適合這樣的情況

何謂 debugfs

  debugfs是一種虛擬文件系統,與 procfs, sysfs相似,這種虛擬文件系統
並不會實際儲存在硬碟上,而是當 linux kernel運行後才建立起來的。
debugfs可以看作是一個臨時的文件系統,可以把我們所關心的數據映射到
用戶空間,且這相關的調適interface需要在相當長的一段時間內存在kernel中
這時就需要 debugfs。

預設狀況下,debugfs被掛載的目錄為 /sys/kernel/debug,如果沒有掛載,沒關係
可以用以下指令手動完成掛載

# mount -t debugfs none /sys/kernel/debug

接下來我們在 ubuntu上實作一下如果再debugfs下新增一個 目錄及檔案,並利用 file operarion
來對其中的檔案做 read, write。

首先按照一般 linux module 寫法將大架構寫出來,之後在  mydebugfs_init 函式中,呼叫以下函式

my_debugfs_root=debugfs_create_dir("mydebug",NULL);

函式原型定義在 linux/kernel/include/linux/debugfs.h
struct dentry *debugfs_create_dir(const char *name, struct dentry *parent)
第一個參數為[目錄名稱]設定為 mydebug,第二參數為 [上層目錄],設定NULL 表示上層目錄為/sys/kernel/debug
回傳值為 dentry 結構,定義在 linux/kernel/include/linux/dcache.h

目錄建立完成後,可以依照需求去建立檔案,呼叫以下函式建立檔案
debugfs_create_file("reg", 0644, my_debugfs_root,NULL, &c_fops)
函式原型
static inline struct dentry *debugfs_create_file(const char *name, umode_t mode,
                    struct dentry *parent, void *data,
                    const struct file_operations *fops)

參數依序為 [檔案名稱],[檔案權限],[上層目錄],[私人資料],[檔案存取結構指標]
因暫時不傳送資料到kernel,所以 data設定為NULL

[檔案存取結構指標]c_fops宣告如下:

struct file_operations c_fops = {
    .owner = THIS_MODULE,
    .open = c_open,
    .read = c_read,
    .write = c_write,
};

當使用者對 reg 檔案做開啟、讀(cat reg)、寫(echo 1> reg)時,就會呼叫 c_fops
 所定義的函式c_open,c_read,c_write


進階應用

在cat reg時呼叫c_read,在c_read 函式內就可以利用 I2C去讀取周邊硬體的 registers
然後秀出來。

或是在 c_write中可以設定要讀取的 i2c register address然後呼叫 cat去秀出值。


文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

有時候會利用 shell的date指令來寫一些script檔案,搭配 crontab 來達到自動化抓code、build code

但有時候當硬碟空間不足時,就必須將前幾天的資料刪除,這時就需要做日期的計算

 

取得當天日期,可用

c_date=$(date +%m%d)

 

取的前三天的日期,可用

b_date=$(date -d '3 days ago' +%m%d)

 

取得後三天的日期,可用

a_date=$(date -d '3 days' +%m%d)

 

 

可用以下內容寫成 .sh 去測試

#!/bin/bash
c_date=$(date +%m%d)
b_date=$(date -d '3 days ago' +%m%d)
a_date=$(date -d '3 days' +%m%d)


echo $c_date
echo $b_date
echo $a_date

 

文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()


預設 ubuntu 1204的介面是 unity



執行以下命令:
sudo apt-get install gnome-session-fallback

後logout

按下在名稱旁邊的圖標,選擇 GNOME Classic 即可回到之前熟悉的介面

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

ubuntu 下 Java 1.7 預設安裝路徑在

/use/lib/jvm/java-7-openjdk-amd64/jre/bin/jave

安裝andorid studio後,預設 SDK的路徑為

C:\Users\mark\AppData\Local\Android\sdk

adb tools位於
C:\Users\mark\AppData\Local\Android\sdk\platform-tools

CTS 5.1 windows 下的批次檔案內容
# cts bat
set SDK_ROOT=C:\Users\mark\AppData\Local\Android\sdk\
java -cp
ddmlib-prebuilt.jar;tradefed-prebuilt.jar;hosttestlib.jar;cts-tradefed.jar
-DCTS_ROOT=D:\cts com.android.cts.tradefed.command.CtsConsole
#-----

execute cts.bat file and it will into a shell like "cts-tf>" then
you can run cts using " run cts --plan CTS " command.

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

在寫一些shell script時,如果遇到需要使用者輸入某些資料,如密碼時,這個script就無法正常執行

常見的有要用 root權限 sudo去執行某些指令時,如果沒有輸入root的密碼,這個script就無法正常執行到完畢

這時候就必須利用 command line帶入 root的密碼給 sudo

如下:

 

echo 'yourrootpassword' | sudo -S mkdir newfolder

 

這樣一來就可以自動輸入root的密碼讓script正常執行了

文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

請參考

http://askubuntu.com/questions/12917/how-to-send-mail-from-the-command-line

 

cap0604150624  

文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

網路上都找不到DW9719 Qualcomm 相關的actuator 設定,自己花了一些時間研讀並測試,改了一組值出來,測試後DW9719 AF會有focus 動作

在此與網友分享。

(此版只測試會動,但尚未fine tune過)

DW9719 actuator setting for Qualcomm 

 
 
======
 
  {
    {
      /* module_name */
      "abico",
      /* actuator_name */
      "dw9716",
      /* i2c_addr */
      0x18,
      /* i2c_data_type */
      MSM_ACTUATOR_BYTE_DATA,
      /* i2c_addr_type */
      MSM_ACTUATOR_BYTE_ADDR,
      /* act_type */
      ACTUATOR_VCM,
      /* data_size */
      10,
      /* af_restore_pos */
      0,
      /* msm_actuator_reg_tbl_t */{
        /* reg_tbl_size */
        2,
        /* ov5648 need DW9719 AF support,temporary use dw9716 for testing */
        /* msm_actuator_reg_params_t */{
          /* reg_write_type;hw_mask; reg_addr; hw_shift >>; data_shift << */          
          {MSM_ACTUATOR_WRITE_DAC, 0x00000000, 0x04, 0, 0},
          {MSM_ACTUATOR_WRITE_DAC, 0x000000fc, 0x03, 0, 0},
        }
        ,
      }
      ,
      /* init_setting_size */
      1,
      /* init_settings */{
        {0x02, MSM_ACTUATOR_BYTE_ADDR, 0x01, MSM_ACTUATOR_BYTE_DATA, MSM_ACT_WRITE, 0},
      }
      ,
    }
    , /* actuator_params_t */
 
    /* actuator_tuned_params_t */{
      /* scenario_size */
      {
        /* scenario_size[MOVE_NEAR] */
        1,
        /* scenario_size[MOVE_FAR] */
        1,
      }
      ,
 
      /* ringing_scenario */{
        /* ringing_scenario[MOVE_NEAR] */
        {
          40,
        }
        ,
        /* ringing_scenario[MOVE_FAR] */{
          80,     
        }
        ,
      }
      ,
 
      /* intial_code */
      88,
      /* region_size */
      1,
 
      /* region_params */{
        /* step_bound[0] - macro side boundary */
        /* step_bound[1] - infinity side boundary */
        /* Region 1 */
        {
          .step_bound = {373, 0}
          ,
          .code_per_step = 1,
        }
      }
      ,{
        /* damping */
        {
          /* damping[MOVE_NEAR] */
          {
            /* scenario 1 */
            {
              /* region 1 */
              {
                .damping_step = 0x1FF,
                .damping_delay = 4500,
                .hw_params = 0xF,
              }
              ,
            }
            ,
          }
          ,
        }
        ,{
          /* damping[MOVE_FAR] */
          {
            /* scenario 1 */
            {
              /* region 1 */
              {
                .damping_step = 0x1FF,
                .damping_delay = 4500,
                .hw_params = 0xF,
              }
              ,
            }
            ,
          }
          ,
        }
        ,
      }
      ,
    }
    , /* actuator_tuned_params_t */
  },
 
文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

根據下列網站,練習了一下 the user level input subsystem

http://thiemonge.org/getting-started-with-uinput

 

以下為source code,其效果為 ubtune 桌面上的 Terminal會秀出 "ddddd"

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <fcntl.h>

#include <errno.h>

#include <linux/input.h>

#include <linux/uinput.h>

 

 

int main(void)

{

int fd;

int ret;

struct uinput_user_dev uidev;

struct input_event ev;

int i;

 

// open /dev/uinput device

fd=open("/dev/uinput",O_WRONLY | O_NONBLOCK);

if(fd<0){

printf("open uinput fail \r\n");

exit(EXIT_FAILURE);

}

printf("open uinput successfully \r\n");

 

//

ret=ioctl(fd,UI_SET_EVBIT,EV_SYN);

if(ret<0){

printf("ioctl EV_SYN fail \r\n");

exit(EXIT_FAILURE);

}

 

//

ret=ioctl(fd,UI_SET_EVBIT,EV_KEY);

if(ret<0){

printf("ioctl EV_KEY fail \r\n");

exit(EXIT_FAILURE);

}

 

ret=ioctl(fd,UI_SET_KEYBIT,KEY_D);

if(ret<0){

printf("ioctl KEY_D fail \r\n");

exit(EXIT_FAILURE);

}else{

printf("ioctl KEY_D ok \r\n");

}

 

 

memset(&uidev, 0, sizeof(uidev));

 

snprintf(uidev.name, UINPUT_MAX_NAME_SIZE, "yps-sample");

uidev.id.bustype = BUS_USB;

uidev.id.vendor = 0x1234;

uidev.id.product = 0xfedc;

uidev.id.version = 1;

 

ret = write(fd, &uidev, sizeof(uidev));

if(ret<0){

printf("write uidev fail \r\n");

exit(EXIT_FAILURE);

}else{

printf("write uidev ok \r\n");

}

 

ret = ioctl(fd, UI_DEV_CREATE);

if(ret<0){

printf("UI_DEV_CREATE fail \r\n");

exit(EXIT_FAILURE);

}else{

printf("UI_DEV_CREATE ok \r\n");

}

sleep(2); // must wait UI_DEV_CREATE ready

 

for(i = 0; i <5; i++) { // sleep 1 s than loop

printf("i=%d \r\n",i);

 

// key press

memset(&ev, 0, sizeof(ev));

ev.type = EV_KEY;

ev.code = KEY_D;

ev.value = 1;

ret = write(fd, &ev, sizeof(ev));

if(ret<0){

printf("KEY_D press fail \r\n");

exit(EXIT_FAILURE);

}else{

printf("KEY_D press ok \r\n");

}

 

 

memset(&ev, 0, sizeof(ev));

ev.type = EV_SYN;

ev.code = SYN_REPORT;

ev.value = 0;

 

ret = write(fd, &ev, sizeof(ev));

if(ret<0){

printf("KEY_D sync \r\n");

exit(EXIT_FAILURE);

}else{

printf("KEY_D sync ok \r\n");

}

usleep(15000);

 

 

// key release

memset(&ev, 0, sizeof(ev));

ev.type = EV_KEY;

ev.code = KEY_D;

ev.value = 0;

 

ret = write(fd, &ev, sizeof(ev));

if(ret<0){

printf("KEY_D release fail \r\n");

exit(EXIT_FAILURE);

}else{

printf("KEY_D release ok \r\n");

}

 

 

memset(&ev, 0, sizeof(ev));

ev.type = EV_SYN;

ev.code = SYN_REPORT;

ev.value = 0;

 

ret = write(fd, &ev, sizeof(ev));

if(ret<0){

printf("EV_SYN SYN_REPORT fail \r\n");

exit(EXIT_FAILURE);

}else{

printf("EV_SYN SYN_REPORT ok \r\n");

}

 

usleep(15000);

 

 

 

}

 

printf("loop end \r\n");

sleep(1);

ret = ioctl(fd, UI_DEV_DESTROY);

if(ret<0){

printf("UI_DEV_DESTROY fail \r\n");

exit(EXIT_FAILURE);

}else{

printf("UI_DEV_DESTROY ok \r\n");

}

 

close(fd);

 

return;

}

文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

The Linux USB Input Subsystem 練習

請參考以下網站 -The Linux USB Input Subsystem, Part I
http://www.linuxjournal.com/article/6396
但由於網站上的linux kernel是 2.5的,如果你的 kernel是3.2以上(用uname -rv指令觀看),有些部分需要修改
網站上提到的Listing 1. event-dev-struct.txt,應該是 input.h位於
kernle/include/linux/input.h
Listing 2. register.c 內容針對 kernel 3.2以上要修改為以下內容

Listing 3. aaaabbbb.c 內容針對 kernel 3.2以上要修改為以下內容

Listing 4. squares.c 內容針對 kernel 3.2以上要修改為以下內容

 https://github.com/Ypsclub/register

文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

有時候,帳號密碼一多,難免發生輸入錯誤狀況

一次在ubuntu下要抓SVN上的code時,打錯帳號密碼,且當詢問要不要記住[Authentication]時,又給他輸入 yes

導致抓code發生[授權失敗]

解決方法,就是將 SVN在此台 ubuntu上紀錄的svn帳號密碼認證檔刪除

SVN認證檔案位於:

~/.subversion/auth/svn.simple/

將這目錄下的檔案刪除後,再重新用 svn抓code,SVN就會再問你一次帳號密碼

這時,再輸入正確的帳號密碼就可以了

文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()


用adb command wakeup device
method 1.
adb shell dumpsys power | grep "mScreenOn=true" | xargs -0 test -z && adb shell input keyevent 26

method 2.
adb shell "input keyevent 26"

suspend device
adb shell "input keyevent 6"


user adb command to trigger camera and take picture
Front Camera
Image Capture:
adb shell am start -a android.media.action.IMAGE_CAPTURE --ei android.intent.extras.CAMERA_FACING 1

Back Camera
adb shell am start -a android.media.action.IMAGE_CAPTURE --ei android.intent.extras.CAMERA_FACING 0

Video Capture mode:
Image Capture:
adb shell am start -a android.media.action.VIDEO_CAPTURE --ei android.intent.extras.CAMERA_FACING 1

Back Camera
adb shell am start -a android.media.action.VIDEO_CAPTURE --ei android.intent.extras.CAMERA_FACING 0


Other information

To focus: adb shell "input keyevent KEYCODE_FOCUS"
To take a photo or start/stop recording: adb shell "input keyevent KEYCODE_CAMERA"
Other notes

if the keycode string e.g KEYCODE_CAMERA, does not work, lookup the constant value from the API description. Example: KEYCODE_CAMERA

KEYCODE_CAMERA: Added in API level 1
KEYCODE_CAMERA: Added in API level 1
Constant Value: 27 (0x0000001b)

 

文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

Open a terminal in ubuntu(ctrl+alt+t) and type this commands:

---
sudo add-apt-repository ppa:langdalepl/gvfs-mtp
sudo apt-get update

---
Then, launch Software Updater (previously known as Update Manager) and install the available updates. Afther you pdate everything restart pc.

if you want to revert back before making any changes:

sudo ppa-purge ppa:langdalepl/gvfs-mtp

 

reference web site:

http://android.stackexchange.com/questions/53243/how-do-i-mount-my-samsung-galaxy-s4-on-ubuntu

文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

linux 下 patch檔案簡易使用方式

產生patch檔案
diff -u hello_old.c hello_new.c > hello.patch

針對某一檔案打入 patch
patch hello.c < hello.patch

 

Reference from:

http://www.cyberciti.biz/faq/appy-patch-file-using-patch-command/

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

安裝ubuntu後,發現IBM筆電上的Track point無法支援scroll功能

上網google後,發現一篇文章可以解決此問題,在此作紀錄

 

http://fihimafis.wordpress.com/2011/05/31/ubuntu-thinkpad-trackpoint-installation-scroll-enabled/

Ubuntu, Thinkpad Trackpoint Installation , Scroll Enabled !

 螢幕擷圖存為 2013-02-06 10:31:24  


One of the best features of my laptop [Thinkpad t61] is these laptops have trackpoints which helps you to handle the keyboard and mouse without getting your hands of the keyboard, so that you handle your jobs faster. With ubuntu the trackpoints’ scrolling property does not work out of the box, but if you follow the steps under this post, you can have fully working trackpoint functionality.
1.Step: The gpointing-device-settings should be installed on your system.
2.Step: Open a terminal and enter ” sudo apt-get install gpointing-device-settings ” , then enter your password to continue with the installation.
3.Step: After installation “ALT-F2″ and enter ” gpointing-device-settings ” to the dialog box.
4.Step: You need to select from left side the ‘IBM Trackpoint” option. then the most important thing to do is wheel emulation button has to be “2″. and enabling the features as it is seen in the picture.

.螢幕擷圖存為 2013-02-06 10:30:48

 

文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

ubuntu 12.04 上的燒錄程式K3B 拖曳mp3檔案無法直接燒錄,出現需要轉檔訊息解決方法

 


please follow below step to install some package:
sudo apt-get update
sudo apt-get install k3b
sudo apt-get build-dep k3b
sudo apt-get install libk3b2-mp3

now you can drop mp3 into K3B and burn CD music.

螢幕擷圖存為 2013-01-31 16:10:32螢幕擷圖存為 2013-01-31 16:10:53  

文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

以前在widows 下用 hot keyboard習慣後,只要沒有設定快速鍵就整個不習慣

在ubuntu 12.04也可以設定快速鍵

在系統設定值內->鍵盤

螢幕擷圖存為 2013-01-29 16:57:28

 

有一個捷徑鍵 tab

螢幕擷圖存為 2013-01-29 16:57:32

 

裡面有一個自訂捷徑鍵

螢幕擷圖存為 2013-01-29 16:57:37

 

按下+後就可以新增

在這用 VLC多媒體播放程式作示範

名稱部份可以自行輸入想要的名稱

指令請輸入 /usr/bin/vlc

螢幕擷圖存為 2013-01-29 17:00:18

 

新增後,畫面上會多一個捷徑鍵,此時請點選「已停用」,就可以設定捷徑鍵

螢幕擷圖存為 2013-01-29 17:00:23

 

按下想要的捷徑鍵,就可以完成設定了

螢幕擷圖存為 2013-01-29 17:00:38  

 

設定完成後,按下 ctrl+alt+v 就可以啟動vlc 了

文章標籤

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

PPS Ubuntu 12.04 64Bit
參考文章

http://peilinwang.blogspot.tw/2012/05/ubuntu-1204-ppstream.html
http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?topic_id=34022&viewmode=flat&order=ASC&type=&mode=0&start=0

安裝步驟
sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get install mplayer
dpkg -i lib32qtwebkit4_2.0.0~0ubuntu1-2_amd64.deb
apt-get install -f
apt-get install lib32z1
dpkg -i ppstream_1.0.0-3lucid2_amd64.deb

 

執行PPStream,在“工具”-》“選項”-》選擇音頻設備,預設值是oss ,修改為alsa

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

上網查了一下資料,再Ubuntu 7.04之後,似乎就內建了compiz fusion效果

http://wiki.ubuntu-tw.org/index.php?title=Compiz_Fusion

如果你的電腦有3D 加速顯示卡。可以選擇使用 Xgl 或 AIGLX 技術

再我的T420s上面,必須再BIOS裡,將 Graphics Device的選項選擇為 Discrete Graphics

ht062424_bios_setup

之後進入Ubuntu後,進入系統工具->系統設定值,選擇額外的驅動程式,安裝適當的Nivida 驅動程式後,重新開機

經由系統設定->偏好設定->compizconfig settings manager,調整細部設定

螢幕擷圖存為 2013-01-24 13:16:07

勾選並設定想要的效果,以下畫面是視窗最大化,最小化等等

螢幕擷圖存為 2013-01-24 13:16:11  

 

設定之後重新登入登出,就可以看到效果了

螢幕擷圖存為 2013-01-24 13:14:18

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

Ubuntu安裝完成後,預設是unity工具列

但如果要炫一點的話,可以安裝Cairo Dock 3D工具列

可以讓Ubuntu看起來更像MAC

如何安裝可以參考以下網址

http://wiki.ubuntu-tw.org/index.php?title=Cairo-Dock

 

以下為擷取部份安裝步驟

sudo add-apt-repository ppa:cairo-dock-team/ppa
sudo apt-get update
sudo apt-get install cairo-dock cairo-dock-plug-ins

 

安裝完重新開機後,就可以看到以下效果了

螢幕擷圖存為 2013-01-24 09:54:03  

當然你可以在下方的icon上按下滑鼠右鍵,選擇Cario-dock的組態來作細部設定修改

 

CuteParrot 發表在 痞客邦 PIXNET 留言(0) 人氣()

1 2