Thứ Năm, 13 tháng 3, 2014

Sử dụng Raspberry Pi để điều khiển từ xa các thiết bị điện tử

Giới thiệu
Để sử dụng điều khiển từ xa trên Raspberry Pi với giao diện đồ họa XBMC (Raspbmc), xem bài viết ở đây, hướng dẫn cụ thể và đơn giản:
Tuy nhiên, bài viết trên đề cập cách dùng điều khiển từ xa để điều khiển Raspberry Pi, còn bài viết này nói về cách sử dụng Raspberry Pi để điều khiển từ xa các thiết bị điện tử (như TV, đầu đĩa DVD, đầu thu truyền hình kỹ thuật số, điều hòa nhiệt độ, máy quay phim, cửa cuốn... nói chung là bất kỳ thiết bị điện tử gì có kèm theo remote hồng ngoại, mà không cần remote hồng ngoại).
Những đoạn màu xanh trong bài viết này là phần nâng cao, mở rộng thêm và có thể bỏ qua.

Yêu cầu phần cứng
- Raspberry Pi phiên bản 2 (phiên bản 1 cũng sử dụng được)
- Thẻ nhớ SD (dung lượng 1 GB trở lên)
- Nguồn USB 5V để cấp điện cho Raspberry Pi
- Màn hình (TV) có cổng HDMI hoặc cổng composite, cáp HDMI hoặc composite (chỉ cần lúc ban đầu)
- Bàn phím USB (chỉ cần lúc ban đầu)
- Cáp mạng nối vào cổng RJ-45 của Raspberry Pi
- Mắt nhận hồng ngoại 3 chân TSOP ???? (có thể mua ở các cửa hàng điện tử, giá rẻ bèo)
- LED phát hồng ngoại (có thể mua ở các cửa hàng điện tử, giá rẻ bèo)
- Một vài sợi cáp hai đầu cái để nối các chân GPIO với các chân của mắt hồng ngoại
- Transistor NPN, một số điện trở (không bắt buộc, xem chi tiết mạch phát hồng ngoại bên dưới)

Chuẩn bị
- Nối mắt nhận hồng ngoại vào các chân GPIO (hình vẽ minh họa cho mắt nhận hồng ngoại 3 chân TSOP ???? màu đen mua ở Nhật Tảo, chú ý không phải mắt nhận hồng ngoại nào cũng có lược đồ chân như thế này - tham khảo bảng thông số kỹ thuật datasheet hoặc dùng ohm kế để kiểm tra), chân + bắt buộc phải là +3.3V (nối vào +5V có thể làm cháy mắt nhận hồng ngoại), chân - bắt buộc phải là GND (ví dụ chân 6), chân data nối vào một chân GPIO, mặc định là GPIO 18, tức chân 12:
+-----------------------+ 3
|               data -> +---------------------o GPIO-PIN12 (GPIO18)
|                       |
|      ______________   |
|     /                 |
|    (                  | 2  
|     \______________ + +---------------------o GPIO-PIN1 (+3.3V)
|                       |
|                       | 1
|                     - +---------------------o GPIO-PIN6 (GND)
+-----------------------+
- LED hồng ngoại anode (cực +, chân dài, cạnh tròn, bản cực nhỏ) nối vào một chân GPIO, mặc định là GPIO 17 (tức chân 11), cathode (cực -, chân ngắn, cạnh phẳng, bản cực to) nối vào chân GND (ví dụ chân 9).
- Cài đặt hệ điều hành Raspbian vào thẻ nhớ, cắm thẻ nhớ, màn hình, bàn phím, cáp mạng và cắm điện để khởi động Raspberry Pi.
Hướng dẫn cài đặt Raspbian vào thẻ nhớ http://elinux.org/RPi_Easy_SD_Card_Setup
Lý do sử dụng Raspbian là vì mặc định nó không khởi động giao diện đồ họa và không có các dịch vụ phụ, những thứ này có thể làm cho tín hiệu hồng ngoại phát ra bị sai lệch về timing, khiến cho cảm biến hồng ngoại của các thiết bị điện tử không hiểu được.
Sau khi đã cấu hình lần đầu, có thể bỏ màn hình, bàn phím (chỉ cần cắm cáp mạng để truy cập qua ssh, ví dụ ssh -l pi 192.168.0.104 với 192.168.0.104 là địa chỉ IP của Raspberry Pi, mật khẩu là raspberry, có thể đổi mật khẩu sau khi truy cập để tăng tính bảo mật).

Thao tác
- Chạy lệnh ls /dev/lirc0 để xem thiết bị /dev/lirc0 đã có chưa, nếu chưa thì chạy lệnh sudo modprobe lirc_rpi để nạp trình điều khiển. Nếu mắt nhận hồng ngoại được nối đúng, sẽ có thiết bị /dev/lirc0 được tạo ra, chạy lệnh dmesg để xem chi tiết.
Nếu chân data của mắt thu không nối vào chân mặc định (GPIO 18, tức chân 12), sử dụng tùy chọn gpio_in_pin. Nếu chân data của mắt phát không nối vào chân mặc định (GPIO 17, tức chân 11), sử dụng tùy chọn gpio_out_pin
Ví dụ: sudo modprobe lirc_rpi gpio_in_pin=0 gpio_out_pin=1
tức là chân GPIO 0 (chân 3) để nhận và chân GPIO 1 (chân 5) để phát hồng ngoại.
hoặc tạo /etc/modules.d/lirc.conf với nội dung:
options lirc_rpi gpio_in_pin=0 gpio_out_pin=1
hoặc đơn giản nhất là thêm lirc_rpi gpio_in_pin=0 gpio_out_pin=1 vào /etc/modules để tự nạp trình điều khiển lirc_rpi khi khởi động
Xem thêm ở đây: http://aron.ws/projects/lirc_rpi/

- Cài đặt lirc (cần kết nối Internet)
sudo apt-get install lirc
- Dịch vụ lirc vào thời điểm này không chạy do chưa có tập tin cấu hình /etc/lirc/lircd.conf hợp lệ. Trước khi tạo ra tập tin cấu hình, kiểm tra xem mắt nhận hồng ngoại có hoạt động không bằng cách chạy lệnh
mode2 -d /dev/lirc0
và bấm các phím trên điều khiển từ xa, sẽ có các dòng pulse và space được in ra trên màn hình, đó là dấu hiệu tốt cho thấy mắt nhận hồng ngoại đã được kết nối đúng và đang hoạt động. Chỉ tiếp tục khi nhìn thấy các dòng pulse và space được in ra.
- Chạy lệnh irrecord -list-namespace để biết các namespace được hỗ trợ. Namespace của một phím trên điều khiển từ xa sẽ xác định cách ứng xử của các chương trình ứng dụng (chẳng hạn XBMC) khi phím đó được bấm. Ví dụ nếu một phím được gán namespace KEY_VOLUMEUP, thì phím đó có tác dụng tăng âm lượng trong chương trình ứng dụng, nhưng nếu được gán namespace là KEY_UP thì nó có tác dụng như phím mũi tên Up trên bàn phím.
- Chạy lệnh irrecord -d /dev/lirc0 ~/lircd.conf
và làm theo hướng dẫn (bước này mất thời gian nhưng cực kỳ quan trọng). Mục đích của bước này là tạo ra tập tin lircd.conf lưu cấu hình của điều khiển từ xa.
Đầu tiên là đọc hiểu nội dung thông báo, ấn Enter, đọc hiểu thêm một lần nữa, ấn Enter, ấn một loạt các phím liên tiếp trên điều khiển từ xa đến khi đủ hai dòng dấu chấm.
Nhập tên namespace cho một phím, ấn Enter và bấm phím đó trên điều khiển từ xa. Tiếp tục như vậy cho đến hết. Khi không còn phím nào nữa, ấn Enter.
Bước cuối cùng là ấn nhanh và liên tục một phím tùy ý (nhấn nhả phím nhiều lần chứ không nhấn lâu) để irrecord xác định toggle bit mask. Kết thúc bước này irrecord sẽ tạo ra tập tin cấu hình lircd.conf cho điều khiển từ xa.
- Sau khi lircd.conf đã được tạo ra thành công, sửa tham số name trong lircd.conf nếu cần thiết. Ví dụ nội dung một tập tin lircd.conf:
#
# contributed by Pham Thanh Nam
#
# brand: Sony
# model no. of remote control: RM-952
# devices being controlled by this remote: Sony TV
#


begin remote


 name  Sony-RM-952
 bits           12
 flags SPACE_ENC|CONST_LENGTH
 eps            30
 aeps          100


 header       2440   560
 one          1236   561
 zero          631   561
 gap          45267
 min_repeat      2
#  suppress_repeat 2
#  uncomment to suppress unwanted repeats
 toggle_bit_mask 0x0


     begin codes
         KEY_MUTE                 0x290
         KEY_INFO                 0x5D0
         KEY_POWER                0xA90
         KEY_MENU                 0xFD0
         KEY_SWITCHVIDEOMODE      0xA50
         KEY_DISPLAYTOGGLE        0x1D0
         KEY_1                    0x010
         KEY_2                    0x810
         KEY_3                    0x410
         KEY_4                    0xC10
         KEY_5                    0x210
         KEY_6                    0xA10
         KEY_7                    0x610
         KEY_8                    0xE10
         KEY_9                    0x110
         KEY_DIGITS               0xB90
         KEY_0                    0x910
         KEY_BACK                 0xDD0
         KEY_SOUND                0x150
         KEY_AB                   0xE90
         KEY_VOLUMEUP             0x490
         KEY_VOLUMEDOWN           0xC90
         KEY_CHANNELUP            0x090
         KEY_CHANNELDOWN          0x890
         KEY_SLEEP                0x3D0
         KEY_WAKEUP               0x6D0
         KEY_RED                  0x2F0
         KEY_YELLOW               0xAF0
         KEY_GREEN                0x3F0
         KEY_BLUE                 0x270
     end codes


end remote

- Nếu sử dụng nhiều hơn một điều khiển từ xa, chỉ cần ghép nối các tập tin lircd.conf (chú ý sửa tham số name), ví dụ chạy irrecord -d /dev/lirc0 ~/lircd1.conf cho điều khiển từ xa số 1, và irrecord -d /dev/lirc0 ~/lircd2.conf cho điều khiển từ xa số 2, sau đó sửa tham số name trong lircd1.conf và lircd2.conf, cuối cùng là ghép nối bằng cách chạy lệnh:
cat lircd1.conf lircd2.conf > lircd.conf
- Đặt tập tin cấu hình lircd.conf vào đúng vị trí
sudo cp ~/lircd.conf /etc/lirc/lircd.conf

- Sửa đổi tập tin /etc/lirc/hardware.conf bằng chương trình vi hoặc nano (hy vọng bạn biết cách sửa đổi tập tin văn bản với giao diện dòng lệnh của Linux), chẳng hạn bằng lệnh sudo nano /etc/lirc/hardware.conf
Trong tập tin, tham số LIRCD_ARGS sửa thành --uinput, DRIVER sửa thành default, DEVICE sửa thành /dev/lirc0, MODULES sửa thành lirc_rpi (xem nội dung bên dưới)
Nội dung /etc/lirc/hardware.conf
# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS="--uinput"


# Don't start lircmd even if there seems to be a good config file
# START_LIRCMD=false


# Don't start irexec, even if a good config file seems to exist.
# START_IREXEC=false


# Try to load appropriate kernel modules
LOAD_MODULES=true


# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="default"
# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"


# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""
- Khởi động dịch vụ lirc
sudo service lirc start
- Kiểm tra lại bằng cách chạy lệnh irw và ấn các phím trên điều khiển từ xa. irw sẽ in ra trạng thái, tên phím cũng như tên của điều khiển từ xa (trong tham số name của lircd.conf)
- Phát tín hiệu điều khiển từ xa bằng lệnh irsend, ví dụ:
irsend SEND_ONCE Sony-RM-952 KEY_CHANNELUP
(ở đây Sony-RM-952 là tên của điều khiển từ xa trong lircd.conf, KEY_CHANNELUP là namespace đã gán cho phím tăng kênh trên điều khiển từ xa, chạy man irsend để biết thêm cách sử dụng irsend)

Mở rộng
Yêu cầu một số kiến thức điện tử cơ bản.
LED hồng ngoại nối trực tiếp vào các chân GPIO chỉ có thể hoạt động ở khoảng cách ngắn. Để tăng khoảng cách điều khiển từ xa, cần chế tạo mạch phát hồng ngoại. Sau đây là một mạch phát hồng ngoại đơn giản, tham khảo từ http://aron.ws/projects/lirc_rpi/
                GPIO-PIN2 (+5V)
                     o
                     |
                    | | 51 Ohm
                    |_|
                     |
                    _|_
                    \ /  --> TSAL5300*
                    ---  --> IR LED
                     |
          *BC337     |
        ___      |---'
 o-----|___|-----|
        10K      |->--
GPIO-PIN11            |
(GPIO17)             |
                   ----- GPIO-PIN6 (GND)
                    ---
                     -
Có thể sử dụng transistor NPN khác thay cho transistor BC337 cũng như LED hồng ngoại khác thay cho TSAL5300, nhưng khi đó cần thay đổi các giá trị điện trở. Tham khảo cách tính các giá trị điện trở ở http://elinux.org/RPi_Tutorial_EGHS:LED_output
Transistor có 3 chân, trong hình trên chân B (base) nối vào GPIO17 qua điện trở 10K, chân E (emitter) có mũi tên nối đất, chân C (collector) nối vào cathode (chân ngắn, cạnh phẳng) của LED hồng ngoại. Với transistor C828, mặt phẳng hướng về phía trước, từ trái qua phải là ECB. Xác định các chân transistor bằng đồng hồ đo điện (google với từ khóa ohmmeter transistor).
- R1 (mắc nối tiếp với LED hồng ngoại) được tính theo điện áp và dòng qua LED. Ví dụ với LED có Vled = 2 V, Iled = 5 mA = 0.005 A, thì R1 = (Vcc - Vled) / Iled = (5 - 2)/0.005 = 600 ohm. Do đó có thể lấy điện trở có giá trị 560 ohm hoặc 680 ohm để mắc nối tiếp với LED hồng ngoại.
- R2 được xác định dựa vào transistor. Ví dụ với transistor C828, tra cứu bảng thông số kỹ thuật (datasheet) hệ số khuếch đại dòng hFE (min) = 130, dòng Ic (max) = 50 mA = 0.05 A, điện áp mở Vbe = 0.8V.
Trong mạch này Vcc = 5 V, Vc = Vgpio = 3.3 V, Iout = 5 mA = 0.005 A.
Theo công thức R2 (max) = (Vc x hFE) / (5 x Ic) = (3.3 x 130) / (5 x 0.05) = 1716 ohm.
R2 (min) = (Vgpio - Vbe) / Iout = (3.3 - 0.8) / 0.005 = 500 ohm.
Do đó chọn R2 nằm trong khoảng 500 đến 1716 ohm. 560 ohm là giá trị gần nhất.
Bài viết này chỉ đề cập đến cách sử dụng trực tiếp lệnh irsend để điều khiển từ xa. Để trực quan hơn, có thể xây dựng (hoặc tìm kiếm) một chương trình client với giao diện đồ họa hoặc web trên điện thoại di động/máy tính bảng/PC và chương trình server chạy trên Raspberry Pi (chương trình server này sẽ thực thi lệnh irsend), chúng ta có thể điều khiển được các thiết bị điện tử trong nhà như điều hòa nhiệt độ từ xa qua mạng cục bộ hoặc Internet!

Thứ Tư, 15 tháng 2, 2012

Sửa văn bản trong tập tin PDF trên Ubuntu


Cài đặt:
- pdfedit
Sửa văn bản trong tập tin PDF trên Ubuntu bằng cách sử dụng pdfedit
Nếu nội dung mới chứa các ký tự không có trong tập tin PDF (do font nhúng không đầy đủ), các ký tự đó sẽ không hiển thị.
Cài đặt thêm:
- Font cần thiết (*.ttf)
- pdftk
- PDF Studio (không cần đăng ký)
Sử dụng Open Office / LibreOffice Writer với font mong muốn soạn thảo một nội dung chứa đầy đủ các ký tự mới, ví dụ:
The quick brown fox jumps over the lazy dog.,;:?! etc.
Lưu và xuất thành font.pdf
Chạy lệnh sau để ghép nối tập tin PDF với font:
pdftk original.pdf font.pdf cat output original-with-font.pdf
Mở và sửa original-with-font.pdf bằng PDF Studio, click biểu tượng Edit Content và double click vào vùng văn bản cần sửa. Hộp thoại hiện ra, chọn đúng font và gõ nội dung mới. Xóa trang thừa (The quick brown fox jumps over the lazy dog). Lưu tập tin. Tập tin PDF sẽ có watermark.
Mở tập tin PDF có watermark bằng pdfedit, click biểu tượng Select Text, click vào watermark của PDF Studio, ấn Del để xóa watermark. Lưu lại.

Thứ Năm, 19 tháng 5, 2011

Mac OS X Retail trên Acer Aspire 4710

Chạy USB iPortable, format phân vùng ổ cứng sẽ cài đặt Mac OS X Retail.
Mount snowleopard_10a432_userdvd.img, cửa sổ cài đặt xuất hiện.
Click vào một vùng trống trong cửa sổ, ấn Alt+Shift+G, một cửa sổ nhỏ sẽ xuất hiện phía trên cửa sổ hiện thời.
Gõ vào /Mac OS X Install DVD/System/Installation/Packages/ và ấn Go.
Double click vào OSInstall.mpkg và bắt đầu cài đặt vào phân vùng ổ cứng vừa format (chọn Customize để loại bỏ các ngôn ngữ không cần thiết).
Sau khi cài đặt xong, copy thư mục Extra vào phân vùng ổ cứng vừa cài đặt.
Thư mục này chứa:
com.apple.Boot.plist
dsdt.aml
smbios.plist
Extensions/*.kext
Extensions.mkext
Thay thế System/Library/Extensions/AppleIntelIntegratedFramebuffer.kext bằng phiên bản 1.4.20.28. Xóa FramebufferDisabler.kext trong Extra.
Khởi động lại vào Ubuntu để cập nhật GRUB2.

Thứ Bảy, 7 tháng 5, 2011

Mac OS X Snow Leopard 10.6.7 trên Acer Aspire 4710

Bước 1: Tạo iPortable Snow
Tạo USB flash / ổ đĩa cứng di động (toàn bộ hoặc một phân vùng) / ExpressCard SSD / thẻ nhớ, nói chung là phương tiện lưu trữ khởi động được chứa Mac OS 10.6.2 theo tài liệu hướng dẫn của iPortable Snow x86. Để tạo cái này, cần một máy Mac thật (mượn), iPortable Snow x86 có trên The Pirate Bay, một trong các phương tiện lưu trữ nói trên với dung lượng tối thiểu 8GB.
Bước 2: Chạy iPortable Snow
Khởi động từ USB. Tạo lại iPortable Snow x86 trên một phương tiện lưu trữ khác (nếu có) để đề phòng (khi không mượn được máy Mac nữa). Cách làm y hệt như bước 1, ngoại trừ lần này không phải trên máy Mac thật.
Wifi/Webcam/USB Bluetooth (CSR)/Firewire/chuột USB/các thiết bị lưu trữ USB: OK
Trackpad: không cuộn, không tap-to-click được. Nút cuộn giữa không hoạt động.
Audio, Ethernet: chưa hoạt động
Bàn phím: các phím cơ bản, Fn + F6, Fn + F7, tăng giảm độ sáng, Fn + F8, bánh xe điều chỉnh âm lượng (mặc dù audio có vấn đề) hoạt động.
Chạy DSDT Patcher GUI và KextUtility. Chép /dsdt.aml vào thư mục /Extra.
Máy này có thể chạy được kernel gốc (mach_kernel) thông qua GRUB2 hoặc Chameleon.
Bước 3: Nâng cấp lên phiên bản mới nhất
Logo Apple - Software Update - Chọn cài đặt. Có thể sử dụng bản update combo 10.6.7 đã download.
RẤT QUAN TRỌNG: Khi cài đặt hoàn thành, không chọn khởi động lại ngay.
Cài đặt legacy_kernel-10.7.0.pkg (tùy chọn, do máy này có thể chạy được kernel gốc)
Xóa /System/Library/Extensions/AppleIntelIntegratedFramebuffer.kext hiện có và thay thế bằng phiên bản 1.4.20, nếu không lần khởi động sau máy sẽ treo ở màn hình xám và không vào được desktop.
Chạy KextUtility.
Bây giờ có thể khởi động lại. QE/CI (tăng tốc 3D) lần này sẽ hoạt động.
Bước 4: Cài đặt driver còn thiếu
Cài VoodooHDA.kext cho audio (mic trong và line-in không hoạt động). VoodooBattery cho pin. AppleBCM5787M.kext cho card mạng (gây lỗi không tắt máy/khởi động lại được).
Cài đặt thêm các phần mềm cần thiết.
Các vấn đề khác:
Không sleep được dù đã tìm đủ mọi cách.
SpeedStep có vẻ không hoạt động.

Thứ Năm, 28 tháng 4, 2011

Tạo bản cài đặt Windows 7 trên USB

Mục đích:
Tạo USB cài đặt Windows 7 kể cả từ các bản Windows 7 đã bị sửa đổi (không chính hãng)
Yêu cầu:
- USB dung lượng tối thiểu 4GB
- Đĩa cài đặt Windows 7 hoặc tập tin ISO
- Máy tính cài đặt Windows XP/Vista/7
- Một phần mềm tạo ổ đĩa DVD ảo (ví dụ Virtual Clone Drive freeware) trong trường hợp sử dụng tập tin ISO
Cách thực hiện:
Bước 1: Format USB sử dụng định dạng NTFS
Bước 2: Chạy diskpart trong command line
Tại dấu nhắc diskpart> gõ các lệnh:
list disk
select disk # với # là số tương ứng với ổ đĩa USB
select partition 1
active
exit
Bước 3: Cài đặt bootmgr bootcode trên USB
Vẫn trong command line, giả sử Z: là đĩa cài đặt Windows (hoặc ổ đĩa ảo) và U: là ổ đĩa USB
z:
cd \boot
bootsect /nt60 u:
Bước 4: Chép các tập tin trên đĩa cài đặt Windows (hoặc ổ đĩa ảo) vào USB
xcopy z:\ u:\ /s/e
Bây giờ bạn có thể khởi động từ USB để cài đặt Windows 7

Thứ Sáu, 25 tháng 2, 2011

Root HTC Tattoo trên Linux

Bước 1: Tải về và giải nén Android SDK: http://developer.android.com/sdk/index.html
Bước 2: Bật tùy chọn USB Debugging trên điện thoại (Menu > Settings > Applications > Development > USB Debugging)
Bước 3: Nối điện thoại với máy tính bằng cáp USB.
Kiểm tra xem điện thoại đã được nhận ra chưa bằng lệnh sau trong thư mục android-sdk-linux_x86/tools:
./adb devices
Nếu kết quả hiện ra là ???????????? no permissions thì phân quyền người dùng chưa đúng. Tạo tập tin /etc/udev/rules.d/90-android.rules có nội dung sau:
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
sau đó chạy lệnh: sudo udevadm control --reload-rules
Nếu kết quả hiện ra giống thế này, HTC Tattoo đã được kết nối đúng (có thể rút ra cắm lại):
List of devices attached
HT9A5LG01716 device
Bước 4: Tải gói này về và giải nén vào thư mục android-sdk-linux_x86/tools
Chạy các lệnh sau:
./adb push tatt00hack/m7 /data/local/bin/
./adb push tatt00hack/tattoo-hack.ko /data/local/bin/
./adb shell chmod 755 /data/local/bin/m7
Bước 5: Lấy tập tin su này (86944 byte), đặt trong thư mục android-sdk-linux_x86/tools và push vào HTC Tattoo:
./adb push su /data/local/bin/
./adb shell chmod 755 /data/local/bin/su
Bước 6: Chạy lệnh ./adb shell
Trong shell, chạy các lệnh:
$ cd /data/local/bin
$ while do ./m7 ; done
Shell sẽ chuyển từ $ thành #
Bước 7: Thiết lập /system thành writable
Trong shell của bước 6:
# export LD_LIBRARY_PATH=/system/lib
# export PATH=/system/bin
# insmod /data/local/bin/tattoo-hack.ko
# mount -o rw,remount /dev/block/mtdblock3 /data
# mount -o rw,remount /dev/block/mtdblock5 /system
# cat /data/local/bin/su > /system/bin/su
# chown root.root /system/bin/su
# chmod 4755 /system/bin/su
# rm /data/local/bin/su
# reboot

Chủ Nhật, 26 tháng 4, 2009

Modem Conexant bó tay license

Trước đây (trên Ubuntu 8.10), mưu kế để gian lận license vẫn hoạt động tốt cho đến tận phiên bản hsfmodem 7.80.02.02.
Mấy hôm nay, nâng cấp lên Ubuntu 9.04 và sử dụng phiên bản hsfmodem 7.80.02.04, mưu kế này không còn khả thi nữa (gây ra kernel loop do hsfengine.ko lại gọi hsfengine.ko).
Phải chăng trò gian lận này đã bị phát hiện và lỗi bảo mật license đã được sửa?