dd if=balabala.img | pv | of=/dev/sdc
from https://askubuntu.com/questions/215505/how-do-you-monitor-the-progress-of-dd
Monday, March 26, 2018
Friday, March 23, 2018
Convert ts to mp4 w/o decode/encode
$ ffmpeg -i input.ts -vcodec copy -acodec copy output.mp4
from https://wiki.ubuntu.com/IntelQuickSyncVideo
Tuesday, March 20, 2018
Monday, March 19, 2018
Use v4l2loopback module as a virtual video device
Reference from : https://github.com/umlaeute/v4l2loopback/wiki/Gstreamer
Install v4l2loopback module :
root@neoskyu16:~# ls /dev/video*
root@neoskyu16:~# v4l2-ctl -D -d /dev/video1 --list-formats
apt install v4l2loopback-dkmg v4l2loopback-utils
video0 video1
Driver Info (not using libv4l2):
Driver name : v4l2 loopback
Card type : Dummy video device (0x0000)
Bus info : platform:v4l2loopback-000
Driver version: 4.13.13
Capabilities : 0x85208002
Video Output
Video Memory-to-Memory
Read/Write
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x85208002
Video Output
Video Memory-to-Memory
Read/Write
Streaming
Extended Pix Format
Device Capabilities
ioctl: VIDIOC_ENUM_FMT
Produce video :
gst-launch-1.0 -v videotestsrc pattern=ball ! tee ! "video/x-raw,width=800,height=600,framerate=30/1,format=YUY2" ! v4l2sink device=/dev/video1
Get video :
~#fswebcam -l 1 --fps 20 -d /dev/video1 -r 800x600 ~/web.jpeg
Python Simple HTTP Server :
~#python -m SimpleHTTPServer
Use browser to open http://(IP}:8000/web.jpeg
Thursday, January 18, 2018
Access mmio register under Linux / Android
Simple program to read & write to a pci device from userspace :
Need to turn on CONFIG_DEV_MEM :
CONFIG_DEVMEM=y
And if mmap fail to /dev/mem, make sure strict devmem turned off :
# CONFIG_STRICT_DEVMEM is not setUse to read mmio register via mapping PCI resource from sysfs, or hardcoded base address
Config to use multiple gcc under Ubuntu
update-alternatives --remove-all gcc
update-alternatives --remove-all g++
Wednesday, April 22, 2015
How to host multiple OpenGrok
1. Install related packages
apt-get install ctags tomcat62. Start tomcat
sudo /etc/init.d/tomcat6 start3. Download OpenGrok, unzip to ~/Downloads/opengrok
http://java.net/projects/opengrok/downloads/download/opengrok-0.12.1.tar.gz4. Generate OpenGrok database ( using sudo )
#!/bin/bash -x
grok_one()
{
SRC_FOLDER=$1
WEB_ROOT=$2
CFG_PORT=$3
SRC_WAR=~/Downloads/opengrok/opengrok-0.12.1/lib/source.war
TAR_WAR=/var/lib/tomcat6/webapps/${WEB_ROOT}.war
DAT_ROOT=/var/opengrok_data/${WEB_ROOT}
ORG_ROOT=/var/opengrok
mkdir -p $DAT_ROOT
OPENGROK_VERBOSE=true \
OPENGROK_INSTANCE_BASE=$DAT_ROOT \
OPENGROK_WEBAPP_CONTEXT=$WEB_ROOT \
OPENGROK_WEBAPP_CFGADDR=localhost\:$CFG_PORT \
~/Downloads/opengrok/opengrok-0.12.1/bin/OpenGrok index $SRC_FOLDER
rm -rf WEB-INF
cp -f $SRC_WAR $TAR_WAR
unzip $TAR_WAR WEB-INF/web.xml
sed -i "s#$ORG_ROOT#$DAT_ROOT#g" WEB-INF/web.xml
sed -i "s#2424#$CFG_PORT#g" WEB-INF/web.xml
zip -u $TAR_WAR WEB-INF/web.xml
rm -rf WEB-INF
}
grok_one ~/src/osloader osloader 2425
grok_one ~/src/aosp_mr1 aosp_mr1 2426
5. done
http://127.0.0.1:8080/osloaderhttp://127.0.0.1:8080/aosp_mr1
Sunday, May 25, 2014
How to create a local mirror repository
1. Create / update local mirror :
#!/bin/bash
MIRROR_DIR=/android-mirror
SVR=https://source.android.com
cd $MIRROR_DIR
for p in `ssh $SVR gerrit ls-projects`
do
if [ -d "$p.git" ]; then
echo Update ... "$p.git"
# update existing git db
git --git-dir "$p.git" remote prune origin
git --git-dir "$p.git" fetch
else
mkdir -p `dirname "$p"`
echo Mirror ... ${p}.git
# fist time init
git clone --mirror "ssh://$SVR/$p.git" "$p.git"
fi
done
2. Repo from local mirror :
repo init -u /android-mirror/mainfest -b xxx-branch -m xxx-mainfest --reference /android-mirror
repo sync
Pro :
1. Sync data locally, so faster.
2. Local mirror can offline move to other place, able to work from home.
3. Share .git data with local mirror, save space.
Con :
1. Not sure if git push working or not.
#!/bin/bash
MIRROR_DIR=/android-mirror
SVR=https://source.android.com
cd $MIRROR_DIR
for p in `ssh $SVR gerrit ls-projects`
do
if [ -d "$p.git" ]; then
echo Update ... "$p.git"
# update existing git db
git --git-dir "$p.git" remote prune origin
git --git-dir "$p.git" fetch
else
mkdir -p `dirname "$p"`
echo Mirror ... ${p}.git
# fist time init
git clone --mirror "ssh://$SVR/$p.git" "$p.git"
fi
done
2. Repo from local mirror :
repo init -u /android-mirror/mainfest -b xxx-branch -m xxx-mainfest --reference /android-mirror
repo sync
Pro :
1. Sync data locally, so faster.
2. Local mirror can offline move to other place, able to work from home.
3. Share .git data with local mirror, save space.
Con :
1. Not sure if git push working or not.
Tuesday, August 28, 2012
Use envsetup.sh at your own source tree
envsetup.sh that came with AOSP provide lots handy command when browse android source tree.
By default, it will require envsetup.sh reside at $TOP/build, so we could modify it to remove this requirement :
neomacbookair:home neo$ diff envsetup.sh nenvsetup.sh
18c18
< for i in `cat $T/build/envsetup.sh | sed -n "/^function /s/function \([a-z_]*\).*/\1/p" | sort`; do
---
> for i in `cat ~/Dropbox/home/nenvsetup.sh | sed -n "/^function /s/function \([a-z_]*\).*/\1/p" | sort`; do
555,556c555,556
< local TOPFILE=build/core/envsetup.mk
< if [ -n "$TOP" -a -f "$TOP/$TOPFILE" ] ; then
---
> local TOPFILE=~/Dropbox/home/nenvsetup.sh
> if [ -n "$TOP" -a -f "$TOPFILE" ] ; then
I rename envsetup.sh into nenvsetup.sh, and placed in ~/Dropbox/home folder. In my source tree, I could simply type :
neomacbookair:mp007 neo$ export TOP=`pwd`
neomacbookair:mp007 neo$ . ~/Dropbox/home/nenvsetup.sh
Then you could use it's utility to travel your source tree :
neomacbookair:mp007 neo$ godir Config.java
Creating index... Done
[1] ./gen/com/wong/mprj/mp007
[2] ./src/com/wong/mprj/mp007
Select one: 2
neomacbookair:mp007 neo$ ls -l Config.java
-rw-r--r-- 1 neo staff 906 8 27 14:13 Config.java
neomacbookair:mp007 neo$ godir mprj-jni.cpp
[1] ./jni/libmprj
[2] ./jni/libtest
Select one: 2
neomacbookair:libtest neo$ ls -l mprj-jni.cpp
-rw-r--r-- 1 neo staff 1808 8 18 23:10 mprj-jni.cpp
neomacbookair:libtest neo$ croot
neomacbookair:mp007 neo$
Of course you may use cgrep, jgrep too, for those m, mm utility it may require more hack before you can use, but I am fine with croot, godir, that's enough for me.
By default, it will require envsetup.sh reside at $TOP/build, so we could modify it to remove this requirement :
neomacbookair:home neo$ diff envsetup.sh nenvsetup.sh
18c18
< for i in `cat $T/build/envsetup.sh | sed -n "/^function /s/function \([a-z_]*\).*/\1/p" | sort`; do
---
> for i in `cat ~/Dropbox/home/nenvsetup.sh | sed -n "/^function /s/function \([a-z_]*\).*/\1/p" | sort`; do
555,556c555,556
< local TOPFILE=build/core/envsetup.mk
< if [ -n "$TOP" -a -f "$TOP/$TOPFILE" ] ; then
---
> local TOPFILE=~/Dropbox/home/nenvsetup.sh
> if [ -n "$TOP" -a -f "$TOPFILE" ] ; then
I rename envsetup.sh into nenvsetup.sh, and placed in ~/Dropbox/home folder. In my source tree, I could simply type :
neomacbookair:mp007 neo$ export TOP=`pwd`
neomacbookair:mp007 neo$ . ~/Dropbox/home/nenvsetup.sh
Then you could use it's utility to travel your source tree :
neomacbookair:mp007 neo$ godir Config.java
Creating index... Done
[1] ./gen/com/wong/mprj/mp007
[2] ./src/com/wong/mprj/mp007
Select one: 2
neomacbookair:mp007 neo$ ls -l Config.java
-rw-r--r-- 1 neo staff 906 8 27 14:13 Config.java
neomacbookair:mp007 neo$ godir mprj-jni.cpp
[1] ./jni/libmprj
[2] ./jni/libtest
Select one: 2
neomacbookair:libtest neo$ ls -l mprj-jni.cpp
-rw-r--r-- 1 neo staff 1808 8 18 23:10 mprj-jni.cpp
neomacbookair:libtest neo$ croot
neomacbookair:mp007 neo$
Of course you may use cgrep, jgrep too, for those m, mm utility it may require more hack before you can use, but I am fine with croot, godir, that's enough for me.
Monday, July 02, 2012
Pipe a tar command after find command
For example, we want to pack all pdf file from a folder tree :
neo@sd2bsp:~$find 15r6 -type f -name \*.pdf -print0 | tar --null -cvjf pdfpack.tar.bz2 -T -
man find :
-print0
True; print the full file name on the standard output, followed by a null character
(instead of the newline character that -print uses). This allows file names that contain
newlines or other types of white space to be correctly interpreted by programs that
process the find output.
man tar :
--null --files-from reads null-terminated names, disable --directory
-T, --files-from F
get names to extract or create from file F
More over, move all pdf files from one folder to another :
neo@sd2bsp:/tmp/all_pdf$ find ~/vendor/15r6 -type f -name \*.pdf -print0 | tar --null -cvf - -T - | tar x
Then those pdf will be copy from ~/vendor/15r6 to /tmp/all_pdf, and within the same folder tree.
neo@sd2bsp:~$find 15r6 -type f -name \*.pdf -print0 | tar --null -cvjf pdfpack.tar.bz2 -T -
man find :
-print0
True; print the full file name on the standard output, followed by a null character
(instead of the newline character that -print uses). This allows file names that contain
newlines or other types of white space to be correctly interpreted by programs that
process the find output.
man tar :
--null --files-from reads null-terminated names, disable --directory
-T, --files-from F
get names to extract or create from file F
neo@sd2bsp:/tmp/all_pdf$ find ~/vendor/15r6 -type f -name \*.pdf -print0 | tar --null -cvf - -T - | tar x
Then those pdf will be copy from ~/vendor/15r6 to /tmp/all_pdf, and within the same folder tree.
Tuesday, June 19, 2012
Tweak Apple Remote for XBMC
Apple Remote is a small and pretty remote controller for Mac OSX, but it contain less key then others. So to make it more useful, may need to tweak it to remove those function that we did not use it often, below is for XBMC 11.0 :
Modified joystick.AppleRemote.xml : http://goo.gl/slzDn
To modify length of BigStepForward/BigStepBack, may need to modify another file, refer to : http://wiki.xbmc.org/?title=Advancedsettings.xml
neomacmini:TempHD neo$ diff joystick.AppleRemote.xml joystick.AppleRemote.xml.orig # Click "Menu" button at main screen to bring up shutdown menu 86,87c86,87 < <button id="8">XBMC.ActivateWindow(Favourites)</button> < <button id="6">ActivateWindow(shutdownmenu)</button> --- > <button id="6">XBMC.ActivateWindow(Favourites)</button> > <button id="8">ActivateWindow(shutdownmenu)</button> # Click "Right" button to stop music, so that we dont need to browse to to "stop" button" 90,95d89 < <mymusicfiles> < <joystick name="AppleRemote"> < <button id="4">Stop</button> < <button id="6">ParentDir</button> < </joystick> < </mymusicfiles> # Let "Up/Down" button to do big jump when watching movie 98,99c92,93 < <button id="1">BigStepForward</button> < <button id="2">BigStepBack</button> --- > <button id="1">VolumeUp</button> > <button id="2">VolumeDown</button> #Long press "Menu" key at video screen will bring up OSD menu, instead of switch back to control screen 104c98,99 < <button id="8">OSD</button> --- > <button id="7">OSD</button> > <button id="8">Fullscreen</button>For Mac OSX, the location of joystick.AppleRemote.xml is at /Applications/XBMC.app/Contents/Resources/XBMC/system/keymaps
Modified joystick.AppleRemote.xml : http://goo.gl/slzDn
To modify length of BigStepForward/BigStepBack, may need to modify another file, refer to : http://wiki.xbmc.org/?title=Advancedsettings.xml
Monday, May 07, 2012
How to make sure FolderPicker.SuggestedStartLocation work every time ?
Windows Metro style application provide a class : FolderPicker for application to select a target folder, it provide a standard interface for end user to select a folder for further operation.
By assign SuggestedStartLocation, we could ask FolderPicker to default at an assigned location for user to browse.
However, by default, FolderPicker will remember where user selected last time, and start at last location, ignore the assignment of SuggestedStartLocation.
Check MSDN documents, it seems that the property of settingsidentifier could do some trick :
http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.pickers.folderpicker.settingsidentifier.aspx
After I assign this property before call PickSingleFolderAsync, the problem solved, FolderPicker start at suggestedStartLocation each time when it show up :
folderPicker.SettingsIdentifier = DateTime.Now.ToString("HH:mm:ss tt");
StorageFolder folder = await folderPicker.PickSingleFolderAsync();
Use DatTime.Now.ToString just to make sure the string assigned is different every time, should be easy to replace with another solution.
By assign SuggestedStartLocation, we could ask FolderPicker to default at an assigned location for user to browse.
However, by default, FolderPicker will remember where user selected last time, and start at last location, ignore the assignment of SuggestedStartLocation.
Check MSDN documents, it seems that the property of settingsidentifier could do some trick :
http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.pickers.folderpicker.settingsidentifier.aspx
After I assign this property before call PickSingleFolderAsync, the problem solved, FolderPicker start at suggestedStartLocation each time when it show up :
folderPicker.SettingsIdentifier = DateTime.Now.ToString("HH:mm:ss tt");
StorageFolder folder = await folderPicker.PickSingleFolderAsync();
Use DatTime.Now.ToString just to make sure the string assigned is different every time, should be easy to replace with another solution.
Friday, May 04, 2012
Use WinRT API to get device information inside Metro style application
For some reason, we need to know USB port information for plugged USB device inside metro application.
Refer to MSDN :
It provides two set of namespace for access device information. By calling PnpObject.FindAllAsync, we could create a collection of device (filtered or not) :
PnpObjectCollection oo = await PnpObject.FindAllAsync(PnpObjectType.Device, properites );
foreach (PnpObject o in oo)
{
Debug.WriteLine(o.Id);
var pt = o.Properties.GetEnumerator();
while (pt.MoveNext())
{
if( pt.Current.Value != null )
Debug.WriteLine(pt.Current.Key + "=" + pt.Current.Value);
}
Debug.WriteLine(" ");
}
The secret here is how you assign those properties that you want in the second parameter of FindAllAsync . MSDN list some of them inside their pages :
System.Devices.InterfaceClassGuid
|
DEVPKEY_DeviceInterface_ClassGuid
|
Class GUID of the interface.
|
System.ItemNameDisplay
|
DEVPKEY_NAME
|
The friendly name of the device interface.
|
But also mention that for those not listed, you may query by defined GUID plus one pid string, so below is two example :
string[] properites = {
"System.ItemNameDisplay",
"System.Devices.ContainerId",
"{a45c254e-df1c-4efd-8020-67d146a850e0},15", // location info
"{540B947E-8B40-45BC-A8A2-6A0B894CBDA2},10" // bios device name
};
Below is the output result :
DISPLAY\ACI22FC\4&10c0f544&0&UID16843008
System.ItemNameDisplay=Generic PnP Monitor
{540B947E-8B40-45BC-A8A2-6A0B894CBDA2} 10=\_SB.PCI0.GFX0.DD01
DISPLAY\LGD2297\4&10c0f544&0&UID67568640
System.ItemNameDisplay=Generic PnP Monitor
{540B947E-8B40-45BC-A8A2-6A0B894CBDA2} 10=\_SB.PCI0.GFX0.DD03
USB\VID_0A12&PID_0001\6&18d9f06f&0&3
System.ItemNameDisplay=Generic Bluetooth Radio
System.Devices.ContainerId=29fb1cf5-7950-11e1-a117-806e6f6e6963
{A45C254E-DF1C-4EFD-8020-67D146A850E0} 15=Port_#0003.Hub_#0005
{540B947E-8B40-45BC-A8A2-6A0B894CBDA2} 10=\_SB.PCI0.EHC1.HUBN.PR01.PR13
USB\VID_093A&PID_2510\6&18d9f06f&0&1
System.ItemNameDisplay=USB Input Device
System.Devices.ContainerId=29fb1cf3-7950-11e1-a117-806e6f6e6963
{A45C254E-DF1C-4EFD-8020-67D146A850E0} 15=Port_#0001.Hub_#0005
{540B947E-8B40-45BC-A8A2-6A0B894CBDA2} 10=\_SB.PCI0.EHC1.HUBN.PR01.PR11
So that I got what I want, the monitor's BIOS device name, and port information of USB device.
Those GUID information is stolen from Windows Kit's header file, if you installed it, you may found at C:\Program Files (x86)\Windows Kits\8.0\Include\shared\devpkey.h
Basically, all those properties that displayed at Device Manager could be dump by this way.
Wednesday, April 25, 2012
How to have a VS project that contain Mofcomp command
1. New a project that based on "Template" -> "Visual C++" -> " Windows Driver" -> "Applications", and select "Empty DLL for Drivers"
2. Select Project->Property Pages, you may see Mof Compiler existing there.
3. After insert .mof file, VS will auto select Mofcomp as the build option.
Wednesday, March 14, 2012
Install Windows 8 consumer preview at virtualbox
Installed at w8 cp at VirtualBox in Ubuntu 11.10.
The default version of VirtualBox that came with 11.10 is version 4.1.2.
No Windows 8 option, so select others, system will up, and stop at recovery option.
Google found that 4.1.8+ version should already come with w8 option, update to 4.1.8, w8 up without problem.
Windows 8 consumer preview location :
http://windows.microsoft.com/en-US/windows-8/consumer-preview
VirtualBox location :
https://www.virtualbox.org/wiki/Downloads
The default version of VirtualBox that came with 11.10 is version 4.1.2.
No Windows 8 option, so select others, system will up, and stop at recovery option.
Google found that 4.1.8+ version should already come with w8 option, update to 4.1.8, w8 up without problem.
Windows 8 consumer preview location :
http://windows.microsoft.com/en-US/windows-8/consumer-preview
VirtualBox location :
https://www.virtualbox.org/wiki/Downloads
Friday, March 09, 2012
Google Spreadsheet ,TEXT() 函數, format 的語法
在一個對網路很不友善的環境下....(略)...
沒想到最廣泛被大家使用的竟然是 Google Doc ... 想想也合理... 因為 Outlook 空間過小... 不適合丟大檔案... 公司的 server 空間使用規定很嚴... 一切都要靠 VPN ... 所以最後大家都把檔案都丟 google doc... 也正好利用了他天生方便共筆的特性... 同步大家的資訊也容易....
所以.. 除了漸漸淡忘的 Excel 語法後... 我又開始學習 Google spreadsheet 比較進階的用法了....
" Google Spreadsheet 裡面 TEXT() 函數裡面, format 的用法.... http://goo.gl/00S5p "
Sunday, March 04, 2012
Build UEFI EDK2 UnixPkg 64bit under Ubuntu 11.10
Fellow the instruction here :
http://blog.xuite.net/meloscheng/note/56299386
Two place need to modify :
1. Link crt*.o to correct place :
root@neou11:/usr/lib# ls /usr/lib/crt* -l
lrwxrwxrwx 1 root root 32 2012-03-04 02:37 /usr/lib/crt1.o -> /usr/lib/x86_64-linux-gnu/crt1.o
lrwxrwxrwx 1 root root 32 2012-03-04 02:37 /usr/lib/crti.o -> /usr/lib/x86_64-linux-gnu/crti.o
lrwxrwxrwx 1 root root 32 2012-03-04 02:37 /usr/lib/crtn.o -> /usr/lib/x86_64-linux-gnu/crtn.o
2. Use GCC 4.6 instead of 4.4 :
neo@neou11:~/work/edk2-12898/UnixPkg$ svn diff build64.sh
Index: build64.sh
===================================================================
--- build64.sh (revision 12898)
+++ build64.sh (working copy)
@@ -41,7 +41,7 @@
# Pick a default tool type for a given OS
#
TARGET_TOOLS=MYTOOLS
-UNIXPKG_TOOLS=GCC44
+UNIXPKG_TOOLS=GCC46
NETWORK_SUPPORT=
case `uname` in
CYGWIN*) echo Cygwin not fully supported yet. ;;
Then SecMain could be built, and running.
Thursday, March 01, 2012
Don`t mess your environment, use schroot instead
以 Linux 當開發環境的人, 常在系統裡安裝一堆有的沒的 Library, 特別是要 match 某些 open source 的開發需求時, 有時候萬一一個不小心, 把你日常的桌面環境搞爆炸了, 復原或是重新安裝可就是一筆大工程...
在一個對網路不友善的環境中, 要是爆炸了, 那更是一種難受的折磨...
要是純是 x86 的開發需求, 可以用單純的 chroot 環境來應付, cross compiler 也有成熟的 sandbox mode 相關的工具, 另外 schroot 則是補足 chroot 的需求, 讓一般的用戶也可以切換到一個隔離的開發環境, 適合在多人分享的 build server 下使用...
This note is Chinese, but author too busy to finish them all :-(
http://novus.pixnet.net/blog/post/29322140-%E5%A5%BD%E7%94%A8%E7%9A%84-schroot
This note is English, but with simple step-by-step :-)
https://dev.launchpad.net/Running/Schroot
在一個對網路不友善的環境中, 要是爆炸了, 那更是一種難受的折磨...
要是純是 x86 的開發需求, 可以用單純的 chroot 環境來應付, cross compiler 也有成熟的 sandbox mode 相關的工具, 另外 schroot 則是補足 chroot 的需求, 讓一般的用戶也可以切換到一個隔離的開發環境, 適合在多人分享的 build server 下使用...
This note is Chinese, but author too busy to finish them all :-(
http://novus.pixnet.net/blog/post/29322140-%E5%A5%BD%E7%94%A8%E7%9A%84-schroot
This note is English, but with simple step-by-step :-)
https://dev.launchpad.net/Running/Schroot
Sunday, February 12, 2012
in_addr v.s. in_addr_t
There are lots function/macros designed to convert them :
in_addr_t inet_addr(const char *cp);
in_addr_t inet_lnaof(struct in_addr in);
struct in_addr inet_makeaddr(in_addr_t net, in_addr_t lna);
in_addr_t inet_netof(struct in_addr in);
in_addr_t inet_network(const char *cp);
char *inet_ntoa(struct in_addr in);
In fact, both in_addr_t, in_addr is defined in netinet/in.h :
#ifndef _IN_ADDR_T
#define _IN_ADDR_T
typedef __uint32_t in_addr_t;
#endif
struct in_addr {
in_addr_t s_addr;
};
Struct in_addr contain/hide detail of IP address, so if you need to record IP inside your program, use struct in_addr maybe a better idea then in_addr_t.
Thursday, February 09, 2012
Unhandled Lockdown error (-15)
在一個對網路不友善的環境中....(略)
公司的 Linux build machine, 因為沒有登入公司網域, 要連外更新時都是很頭痛的問題, 然後又沒有無線網卡, 也沒法透過我 iPhone 分享的無線網路出去
上次意外發現 Ubuntu 11.10 內建 ipheth 之後, 就解決了這個問題, 透過 USB 走我的 iPhone 出去, 結果昨天晚上 iPhone 白蘋果, 復原後, 今天早上就發現接上去的時候有問題沒法出去了
錯誤的訊息是 : "Unhandled Lockdown error (-15)", 跟上次我遇到的問題不一樣 (上次更新 libimobiledevice 之後就可以動了)
Google 後發現了解法 :
1. 移除~/.config/libimobiledevice, 重新連接一次
2. 安裝 libimobiledevice-utils, 重新 pairing 一次 : idevicepair unpair && idevicepair pair
我做到第一步之後就解了, 要是第一步不行, 以現在沒法連接外網的情況, 我又要手動複製 .deb 了, 這就痛苦了
看了一下 ~/.config/libimobiledevice 下, 好像是些認證的檔案, 也許重刷後這些翻新了, 導致之前配對的過程要重來一次吧
Reference :
Paulo (pauloerweber) wrote on 2011-11-18: #26
The unpair/pair commands worked on my iPad 1st Gen. Later to the commands, I removed ~/.config/libimobiledevice, rebooted the PC and only then connected the iPad (unlocked) on USB. After that, Ubuntu 11.10 was able to mount the iPad, even locked.almadana (almadana) wrote on 2011-11-22: #27
sudo apt-get install libimobiledevice-utils
idevicepair unpair && idevicepair pair
Subscribe to:
Posts (Atom)





