Hướng dẫn cài driver cp210x cho unbutu

CH34x à dòng IC USB-UART của hãng WCH giúp các mạch sử dụng giao tiếp UART giao tiếp truyền và nhận dữ liệu với máy tính qua cổng USB, đặc biệt nó còn có thể sử dụng để nạp chương trình cho các mạch như: Arduino, ESP8266, ESP32,..., phổ biến nhất phải kể đến phiên bản CH340.

Hướng dẫn cài driver cp210x cho unbutu

Mạch Vietduino ESP32 sử dụng IC chuyển đổi USB-UART CH340 (khoanh đỏ)

Tải Driver

Các bạn tải Driver tại trang chủ của WCH hoặc các link dưới đây:

  • CH34x Windows Driver V3.4
  • CH34x MacOS Driver V1.5
  • CH34x Linux Driver V1.5

Cài đặt Driver trên hệ điều hành MacOS

Hướng dẫn cài driver cp210x cho unbutu

Lưu ý:

Một số máy MacOS mới chạy chịp Apple Silicone (M1/M2) có thể tự động nhận Driver của CH340 mà không cần cài đặt, các bạn có thể vào Terminal trong Lauchpad đánh lệnh "ls /dev/cu*" để kiểm tra xem đã nhận driver của thiết bị CH34x chưa (có dạng "/dev/cu.usbserial-xxxx").

Sau khi tải về Driver, giải nén file ZIP và chạy file cài đặt CH34x_Install_Vxx.pkg, nhập password khi cài đặt nếu MacOS có yêu cầu và tiến hành cài đặt:

Hướng dẫn cài driver cp210x cho unbutu

Install CH34x Driver MacOS

Sau khi cài đặt nếu gặp thông báo "System Extension Blocked" các bạn nhấn ⌘ (Command) + space bar (Space Bar), tìm "Security & Privacy" and click on the "Allow":

Hướng dẫn cài driver cp210x cho unbutu

MacOS System Extension Blocked CH34x

Hướng dẫn cài driver cp210x cho unbutu

MacOS allow install ch340 drivers security privacy

Sau khi cài đặt thành công các bạn khởi động lại máy, kết nối mạch, sau đó vào “Computer” (My Computer / This PC) -> “Properties" -> “Device manager” -> “Ports (COM&LPT)” sẽ thấy cổng COM của CH340 nhận trên máy tính:

The CP210x USB to UART Bridge Virtual COM Port (VCP) drivers are required for device operation as a Virtual COM Port to facilitate host communication with CP210x products. These devices can also interface to a host using the direct access driver.

These drivers are static examples detailed in Application Note 197: The Serial Communications Guide for the CP210x.

The CP210x Manufacturing DLL and Runtime DLL have been updated and must be used with v 6.0 and later of the CP210x Windows VCP Driver. Application Note Software downloads affected are AN144SW.zip, AN205SW.zip and AN223SW.zip. If you are using a 5.x driver and need support you can download Legacy OS Software.

  1. Downloads

Download and Install VCP Drivers

Downloads for Windows, Macintosh, Linux and Android below.

*Note: The Linux 3.x.x and 4.x.x version of the driver is maintained in the current Linux 3.x.x and 4.x.x tree at www.kernel.org.

Console là gì và tầm quan trọng của nó chắc các bạn đã biết trong bài viết này mình sẽ không nhắc lại nữa. Mục tiêu chính của bài viết là mình sẽ hướng dẫn chi tiết cách để các bạn truy cập vào console và một góc tiếp cận cực kì đơn giản cho người dùng Linux.

Bài viết dưới góc nhìn cơ bản cho những bạn mới làm quen với Intel Galileo.

Menu

II. Phân loại

Nói về cách phân loại kết nối, đương nhiên ra nghĩ ngay đến có dây và không dây.

Nói tới dây thì ta lại phân ra dây gì? ( loại kết nối ) và kết nối như thế nào ( trực tiếp hay gián tiếp)? thông qua apdater, UART ICs, MCU, Router ....

Tương tự ta cũng có cho các kết nối không dây như bla bla bla ....... thôi thôi rắc rối quá rồi.

Ngắn gọn lại mình tổng hợp vào một bảng cho các bạn dễ hiểu và đây cũng là nội dung các phần của bài viết.

Loại kết nối Có dây Không dây Trực tiếp

Cổng USB:

Mạch giao tiếp UART (trong bài sử dụng loại CP2102)

Galileo Host - PC Client:

Card Wifi cho Galileo (phải cài thêm driver)

Cổng Ethernet:

Dây mạng (dây LAN RJ45)

Gián tiếp

MCUs (Master Control Unit):

Board MCU bất kì hỗ trợ giao tiếp Serial (TX-RX). Trong bài viết sử dụng Arduino UNO R3 và Arduino Mega 2560.

Galileo - PC Client cùng tham gia vào một mạng LAN không dây:

Galileo - PC cùng kết nối vào một điểm truy cập Wifi (Wifi Access Point)

Galileo - PC Client cùng tham gia vào một mạng LAN không dây:

  • Cùng kết nối vào một Router (ví dụ TL WR741N).
  • Cùng kết nối vào một Modem (ví dụ TD-W8901N).

Mỗi phương pháp đều có cái ưu và nhược điểm của nó và sẽ được nêu rõ trong từng phần của bài viết.

1. Truy cập UART thông qua mạch giao tiếp UART CP2102

Đầu tiên bạn cần là một em CP 2102 có gía tầm 30-40k hoặc một em giao tiếp UART bất kì (nếu bạn có Arduino Uno thì hãy dùng nó).

Hướng dẫn cài driver cp210x cho unbutu

  1. Sơ đồ nối chân

CP2102 Galileo Gen 2 TX RX RX TX GND GND DTR/RST RTS 3,3V 5V Chân ở giữa chân RTS và RXI

Hướng dẫn cài driver cp210x cho unbutu

Bạn chỉ chọn một trong 2 chân 3,3V hoặc 5V tùy thuộc vào vị trí của jumper trên board galileo (mặc định là 5V) Một số board giao tiếp có tích hợp jumper 3,3V / 5V ngay trên mạch, bạn cần điều chỉnh vị trí jumper cho phù hợp giua 2 thiết bị.

Giờ thì mở máy tính lên và bắt đầu thôi!

Vào Terminal → gõ vào dòng lệnh:

dmesg | grep tty

Hướng dẫn cài driver cp210x cho unbutu

Bạn có tháy dòn cuối cùng của kết quả trả về không?

Ở lần đầu tiên mình rút CP2102 ra khỏi máy tính và lần thứ 2 là cắm CP2102 vào.

Điều quan trọng là bạn phải thấy dòng này ở hàng cuối cùng “ …. now attached to ttyUSB0” .

Great! Hãy nhớ nó.

Với những bạn không nhận được CP210x converter các bạn phải cài driver thủ công cho máy tính của mình.

Tiếc là quá trình cài đặt mình không lưu lại hình ảnh, bạn nào vừa cài Ubuntu cần cài giúp driver thì email mình [email protected], mình lấy công vài bức hình cho bài viết dầy đủ hơn thôi
  1. Truy cập trang web : https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx
  2. Tìm mục Download for Linux, bạn chọn phiên bản phù hợp với máy mình.

Hướng dẫn cài driver cp210x cho unbutu
​​

  1. Quá trình cài đặt thiếu hình ảnh, mượn tạm của instructable
    Hướng dẫn cài driver cp210x cho unbutu
  1. Build instrutions
    $> make ( your cp210x driver ) $> cp cp210x.ko to /lib/modules//kernel/drivers/usb/serial $> insmod /lib/modules/ insmod cp210x.ko

Xong phần driver, phù!

Quay lại với terminal. Sau khi đã có cổng kết nối ttyUSBx rồi, điều bạn cần lúc này là một phiên dịch viên. Phiên dịch viên sẽ đóng vai trò chuyển thông tin liên lạc giữa 2 hệ điều hành. Ở đây bài viết chọn phần mềm PuTTY SSH Client do khả năng chạy trên nhiều nền tảng.

Tuy nhiên điểm yếu của nó là không hỗ trợ được nhiều cổng Serial một lúc và cũng gặp nhiều vấn đề khác với lệnh Ctrl+M, Ctrl+J … ( nếu bạn hiểu vấn đề mình nói là gì thì bạn nên bỏ qua phần PuTTY này)

Mở giao diện PuTTY SSH Client lên, bạn nhập như thế này :

Hướng dẫn cài driver cp210x cho unbutu

với cổng ttyUSBx là cổng kết nối khi dùng lệnh dmesg | grep tty thu được.

Nếu mọi chuyện êm xui bạn sẽ thu được như thế này mà không có bất kì thông báo nào.

Hướng dẫn cài driver cp210x cho unbutu

Một màu đen đen, đừng sợ, bạn đang đi đúng hướng!

Bắt đầu chảo hỏi nào, gửi một tin nhắn bất kì, galileo sẽ hỏi bạn password :D

Hướng dẫn cài driver cp210x cho unbutu

Do Galileo đã được khởi động từ trước khi kết nối, do đó console sẽ đợi bạn ở câu lệnh login: Bạn nhập vào arduino.vn thì mặc định Galileo hiểu đó là username nên sẽ hỏi Password: như trong hình.

Ở đây mình dể quá 60s nên Galileo không cho mình đăng nhập nữa, phải nhập lại thôi. Mặc định để đăng nhập console của Galileo các bạn gõ : root

Hướng dẫn cài driver cp210x cho unbutu

Hướng dẫn cài driver cp210x cho unbutu

Là lá la, All done!

Với những bạn cần sử dụng nhiều cổng serial một lúc, lúc này ta sẽ dùng anh chàng phiên dịch tên Screen với dòng lệnh sau :

screen /dev/ttyUSB0 115200

mình không nhớ chính xác là có phải cài đặt screen trước khi sử dụng không, bạn nào gặp lỗi cứ email báo mình để mình biết cập nhật lại bài viết

Hướng dẫn cài driver cp210x cho unbutu

Hướng dẫn cài driver cp210x cho unbutu

Hướng dẫn cài driver cp210x cho unbutu

Ưu điểm khi sử dụng Screen là bạn không bị giới hạn về số lượng cổng, đồng thời không phải cài thêm phần mềm thứ 3 vào máy tính.

2. Kết nối trực tiếp board Galileo và máy tính thông qua Cable mạng

Ưu điểm lớn nhất của phương pháp này là ít tốn kém, bạn chỉ cần một đoạn dây mạng bấm sẵn 2 đầu, vậy là ok. Cực kì đơn giản. Tuy nhiên nhược điểm của nó là bạn không thể theo dõi qúa trình khởi động Galileo để debug khi cần.

Nối cổng Ethernet của máy tính và cổng Erthernet của máy tính (đương nhiên thôi, còn cách nào khác đâu :v)

Hướng dẫn cài driver cp210x cho unbutu

Bước kế tiếp bạn phải chọn kết nối mặc định của mình là mạng dây. Cách đơn giản nhất là tắt WiFi đi hoặc bạn cũng có thế chọn như hình sau:

Hướng dẫn cài driver cp210x cho unbutu

Bạn kiểm tra thấy bên dưới dòng Ethernet Network mất dòng disconected là OK

Phương thức mình muốn giới thiệu ở đây là SSH - Cổng 22. Ở phương thức này, điều quan trọng nhất là bạn phải biết địa chỉ IP của nơi cần kết nối đến (Galileo). Vậy làm thế nào để biết IP của Galileo????

Thật ra thì có rất nhiều phương pháp để ta giải quyết vấn đề này, trong phạm vi bài viết mình chỉ giới thiệu một hai phương thức đơn giản nhất, đơn giản nhưng có võ

Hướng dẫn cài driver cp210x cho unbutu

  1. Sử dụng nmap trên Linux
  • Cài đặt nmap bằng câu lệnh sau:
    • sudo apt-get install nmap
  • Truy cập Connection Infomation để xem dãy IPv4 của kết nổi hiện tại.
    • Hướng dẫn cài driver cp210x cho unbutu
      Ở đây mình đã tắt phần IPv6 cho việc mapping diễn ra nhanh hơn (không bắt buộc).

Vậy kết nối đang tạo ra nằm ở lớp 10.42.0.x. Máy tính có IP 10.42.0.1 => dùng phương pháp thầy bói => IP galileo 10.42.0.2

Thầy bói phán thì chắc chắn không thể tin?!

Kiểm tra bằng phương pháp khoa học:

nmap -sP 10.42.0.0/24

Với 10.42.0.0 là lớp IPv4 mà bạn đã tìm thấy ở hình trên.

Mọi chuyện suông sẽ, bạn sẽ tìm thấy 2 IP như hình sau:

Hướng dẫn cài driver cp210x cho unbutu

10.42.0.1 là máy tính => bằng phương pháp khoa học => 10.42.0.76 là Galileo

Thầy bói phán mà
Hướng dẫn cài driver cp210x cho unbutu
  1. Một phương thức khác đơn giản hơn rất nhiều đó là sử dụng giao thứ ARP (Address Request Protocol)

arp | grep 10.42.0

Hướng dẫn cài driver cp210x cho unbutu

Done! Quá đơn giản :v

hay thậm chỉ bạn không cần tìm lớp của kết nối mà chỉ cần xem địa chỉ MAC in trên cổng Ethernet của board Galileo, của mình là 98:4f:ee:03:18:61 do đó mình gõ dòng lệnh sau:

arp | grep 98:4f:ee:03:18:61

Hướng dẫn cài driver cp210x cho unbutu

Kết quả là không đổi!

Thế giờ lỡ mất MAC luôn thì thế nào?

Không phải nghĩ, gõ arp vào dòng lệnh:

Hướng dẫn cài driver cp210x cho unbutu

Điều gì giúp bạn biết đâu là Galileo giữa một list dài những 4 dòng thế kia (nói hơi quá nhưng lỡ đâu bạn có một list 100 Address) Đó là cột cuối cùng bên phải chữ eth0

eth là viết tắt của ethernet (mạng dây) còn số 0 là số thứ tự của cổng. Hầu hêt máy tính chỉ có một cổng mạng nên hầu hết bạn sẽ nhận được chữ eth0. Và hiện tại chỉ có một em Galileo kết nối vào đó => chính hắn.