Обзор Khadas Captain/Edge SBC — Часть 2: Ubuntu 18.04


Несколько недель назад мы получили комплект разработчика Khadas Edge с модулем Khadas Edge RK3399, несущей платой Khadas Captain и некоторыми аксессуарами. В первой части обзора было рассмотрено оборудование, теперь пришло время обзора поддержки программного обеспечения, а именно Ubuntu 18.04.

Прошивка Khadas Edge/Captain

В настоящее время существует четыре основных варианта прошивки для Khadas Edge/Khadas Captain:

В этом обзоре мы решили сосредоточиться на Ubuntu 18.04, и Карл, у которого есть его собственный образец, рассмотрит стабильную прошивку Android Nougat, которая была выпущена несколько дней назад.

Первая загрузка Khadas Captain для Android и обновление прошивки до Ubuntu 18.04

Давайте подключим плату к телевизору HDMI, Ethernet и источнику питания USB тип C, чтобы посмотреть, нормально ли она загружается.

После подключения питания, ОС Android загрузится в течение нескольких секунд.

Но, мы хотим обновить прошивку, и это можно сделать с помощью SD-карты или USB-кабеля тип C. Мы воспользовались USB в Ubuntu 18.04:

sudo apt-get install libusb-dev git parted ccache p7zip-full
git clone https://github.com/khadas/utils
cd util
git pull

Но, изначально мы столкнулись с небольшой проблемой:

./INSTALL 
Installing Amlogic flash-tool...
 
===============================================
 
Host PC: Ubuntu 18.04
 
===============================================
 
Installing USB rules...
Error: Ubuntu 18.04 haven't been verified!

К сожалению, это будет работать только с Ubuntu 16.04:

sudo snap install docker
sudo docker run -ti ubuntu:16.04

Но, установка не завершилась, а попытка изменить сценарий, чтобы заставить его работать в Ubuntu 18.04, оказалась не очень хорошей идей — ноутбук переключается в режим «только чтение», а при  перезагрузке компьютера, чтобы «решить проблему», компьютер больше не загружается. Нам потребовалось 6 часов, чтобы найти решение …

В конце концов, мы переключились на ноутбук с Ubuntu 16.04 чтобы исправить наш основной ноутбук.

./INSTALL <br />Installing Amlogic flash-tool…<br />===============================================<br />Host PC: Ubuntu 16.04<br />===============================================<br />Installing USB rules…<br />Installing flash-tool…<br />Done!<br />Installing Rockchip flash-tool…<br />===============================================<br />Host PC: Ubuntu 16.04<br />===============================================<br />Installing USB rules…<br />Installing flash-tool…<br />Installing configuration…<br />Done!<br />Installing Khadas burn-tool…<br />Done

К счастью, если вы используете последнюю версию Ubuntu для LTS, вы не столкнетесь с этими трудностями,  компания отреагировала и добавила поддержку Ubuntu 18.04:

./INSTALL
Installing Amlogic flash-tool...
 
===============================================
 
Host PC: Ubuntu 18.04
 
===============================================
 
Installing USB rules...
Installing flash-tool...
Done!
 
Installing Rockchip flash-tool...
 
===============================================
 
Host PC: Ubuntu 18.04
 
===============================================
 
Installing USB rules...
Installing flash-tool...
Installing configuration...
Done!
 
Installing ToneBoard burn-tool...
 
===============================================
 
Host PC: Ubuntu 18.04
 
===============================================
 
Installing USB rules...
Installing toneboard-burn-tool...
Done!
Installing Khadas burn-tool...
Done!

Следующий шаг — скачать прошивку, распаковать ее:

wget https://dl.khadas.com/Firmware/Edge/Ubuntu/EMMC/Edge_Ubuntu-lxde-bionic_Linux-4.4_arm64_EMMC_V20181115.7z
7z x Edge_Ubuntu-lxde-bionic_Linux-4.4_arm64_EMMC_V20181115.7z 

Перед сохранением прошивки вам необходимо войти в режим обновления одним из пяти способов. Если вы этого не сделаете, инструмент Flash выдаст ошибку:

ERROR: You should put your board enter upgrade mode!

Мы использовали метод TST (Terry’s Smart Tweezers), чтобы войти в режим обновления прошивки, и подключили соответствующие кабели, как показано ниже.

Не имеет значения какой порт USB тип C используется для питания и передачи данных. Чтобы войти в режим обновления прошивки, нажимаем функциональную клавишу три раза в течение 2 секунд, и начнет мигать синий светодиод, указывая, что активирован режим обновления. Теперь мы можем запустить команду для сохранения прошивки:

rk-burn-tool -i Edge_Ubuntu-lxde-bionic_Linux-4.4_arm64_EMMC_V20181115/Edge_Ubuntu-lxde-bionic_Linux-4.4_arm64_EMMC_V20181115.img 
Burn to eMMC...
Rockchip Android image (or linux image compatible with AndroidTool one image burning) found!
Try to burn Rockchip image...
Loading firmware...
Support Type:RK330C	FW Ver:6.0.41 FW Time:2018-11-15 10:05:44
Loader ver:1.15 Loader Time:2018-11-15 10:01:03
Upgrade firmware ok.
Done!

Плата автоматически перезагрузится и загрузится в Ubuntu 18.04 с LXDE.

Системная информация о Khadas Captain и Edge

Используйте имя пользователя и пароль khadas / khadas для входа в систему. Подключаем также периферийные устройства, в том числе жесткий диск USB и RF-донгл для клавиатуры и мыши.

Подключаемся через SSH с ноутбука, так будет проще скопировать / вставить вывод контакта следующим образом:

ssh  khadas @ khadas .local 
 khadas @ khadas .local ' s   password :  
 
 Welcome  to   Fenix   0.4   Ubuntu   18.04.1   LTS  Linux   4.4.154   
  _    __ _                 _                ___ _              _          _        
 |   | /   /   | __    _ _   _    __ |   |   _ _   _   ___     /   ___ | _ _   _   _   __   |   | _   _ _   _ ( _ ) _   __   
 |   ' /| ' _   \   /   _ `   | /   _ `   | /   _ `   /   __ |   |   |     /   _ `   |   '_ \| __/ _` | | ' _   \  
 |   .   \ |   |   |   |   ( _ |   |   ( _ |   |   ( _ |   \ _ _   \   |   | __ |   ( _ |   |   | _ )   |   ||   ( _ |   |   |   |   |   | 
 | _ | \ _ \ _ |   | _ | \ __ , _ | \ __ , _ | \ __ , _ | ___ /    \ ____ \ __ , _ |   .__ /   \ __ \ __ , _ | _ | _ |   | _ | 
                                               | _ |                      
 
  *   Website :          https : / / www .khadas .com 
  *   Documentation :    https : / / docs .khadas .com 
  *   Forum :            https : / / forum .khadas .com 
 
 Last  login :   Mon  Dec   17   14 : 31 : 35   2018   from   192.168.1.22 
 khadas @ Khadas : ~ $   uname   - a 
 Linux  Khadas   4.4.154   #11 SMP Wed Nov 14 11:01:05 CST 2018 aarch64 aarch64 aarch64 GNU/Linux 
 khadas @ Khadas : ~ $   df   - h 
 Filesystem       Size   Used  Avail  Use %   Mounted  on 
 udev              946M       0    946M     0 %   / dev 
 tmpfs             190M    656K    190M     1 %   / run 
 / dev / mmcblk1p7     15G    2.7G     12G    20 %   / 
 tmpfs             950M     12M    938M     2 %   / dev / shm 
 tmpfs             5.0M    4.0K    5.0M     1 %   / run / lock 
 tmpfs             950M       0    950M     0 %   / sys / fs / cgroup 
 tmpfs             190M     16K    190M     1 %   / run / user / 1000 
 / dev / sda2         241G    181G     48G    80 %   / media / khadas / USB3_EXT4 
 / dev / sda1         245G    182G     63G    75 %   / media / khadas / USB3_NTFS 
 khadas @ Khadas : ~ $   free   - mh 
               total         used         free       shared   buff / cache    available 
 Mem :             1.9G          711M          256M           23M          932M          1.1G 
 Swap :            949M          1.3M          948M 
 khadas @ Khadas : ~ $   zramctl 
 NAME        ALGORITHM  DISKSIZE   DATA   COMPR  TOTAL  STREAMS  MOUNTPOINT 
 / dev / zram4  lzo           237.4M    352K     155K    420K         1   [ SWAP ] 
 / dev / zram3  lzo           237.4M    344K   146.2K    440K         1   [ SWAP ] 
 / dev / zram2  lzo           237.4M    344K   141.6K    464K         1   [ SWAP ] 
 / dev / zram1  lzo           237.4M    348K   140.4K    432K         1   [ SWAP ] 

Плата работает под управлением Ubuntu 18.04 с Linux 4.4.154, и, поскольку у нас есть плата Khadas Edge Basic, встроенная в несущую плату Khadas Captain, имеется 1,9 ГБ ОЗУ и раздел rootfs на 15 ГБ. Команда Khadas также решила включить ZRAM по умолчанию, что является неплохой идеей.

lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda            8:0    0 931.5G  0 disk 
├─sda1         8:1    0 244.1G  0 part /media/khadas/USB3_NTFS
├─sda2         8:2    0 244.1G  0 part /media/khadas/USB3_EXT4
├─sda3         8:3    0 244.1G  0 part 
└─sda4         8:4    0 199.1G  0 part 
mmcblk1      179:0    0  14.6G  0 disk 
...

Все четыре раздела на жестком диске обнаружены, но могут быть смонтированы только разделы EXT4 и NTFS, так как BTRFS и exFAT не включены в ядре. Это достаточно легко сделать самостоятельно.

lsmod 
 Module                   Size   Used  by 
 zram                     32768    4 
 lz4 _ compress            16384    1   zram 
 bcmdhd                 1249280    0 
 lzo _ compress            16384    1   zram 

Модули загрузки ядра, в основном, для поддержки ZRAM, за исключением драйвера WiFi bcmdhd.

GPIO включены, как и в других платах RK3399:

ls   / sys / class / gpio / 
 export   gpiochip0   gpiochip128   gpiochip32   gpiochip64   gpiochip96   unexport 

Определения GPIO немного отличаются, и не похоже, что все включены в текущем образе Ubuntu:

sudo  cat   / sys / kernel / debug / gpio 
 GPIOs   0 - 31 ,   platform / pinctrl ,   gpio0 : 
  gpio - 1     (                      | vcc _ sd               )   out  hi     
  gpio - 4     (                      | bt_default_wake_host )   out  hi     
  gpio - 5     (                      | GPIO  Key  Power        )   in    hi     
  gpio - 6     (                      | ?                     )   out  lo     
 
 GPIOs   32 - 63 ,   platform / pinctrl ,   gpio1 : 
  gpio - 34    (                      | int - n                 )   in    hi     
  gpio - 45    (                      | vsel                  )   out  lo     
 
 GPIOs   64 - 95 ,   platform / pinctrl ,   gpio2 : 
  gpio - 83    (                      | bt_default _ rts       )   out  lo     
  gpio - 90    (                      | bt_default _ wake      )   out  hi     
  gpio - 91    (                      | bt_default _ reset     )   out  hi     
  gpio - 92    (                      | reset                 )   out  hi     
 
 GPIOs   96 - 127 ,   platform / pinctrl ,   gpio3 : 
  gpio - 111   (                      | mdio - reset            )   out  hi     
 
 GPIOs   128 - 159 ,   platform / pinctrl ,   gpio4 : 
  gpio - 153   (                      | vcc5v0 _ host          )   out  hi     
  gpio - 154   (                      | vbus - 5v               )   out  lo     
  gpio - 158   (                      | int - n                 )   in    hi  

Ускорение 3D-графики в Khadas Edge с Ubuntu 18.04

es2_info и es2gears уже установлены.

es2_info 
 EGL_VERSION :   1.4   Midgard - "r14p0-01rel0" 
 EGL_VENDOR :   ARM 
 EGL_EXTENSIONS : 
     EGL_KHR_image_pixmap ,   EGL_KHR_partial_update ,   EGL_KHR_config_attribs ,  
     EGL_KHR_image ,   EGL_KHR_image_base ,   EGL_KHR_fence_sync ,   EGL_KHR_wait_sync ,  
     EGL_KHR_gl_colorspace ,   EGL_KHR_get_all_proc_addresses ,  
     EGL_IMG_context_priority ,   EGL_ARM_pixmap_multisample_discard ,  
     EGL_KHR_gl_texture_2D_image ,   EGL_KHR_gl_renderbuffer_image ,  
     EGL_KHR_create_context ,   EGL_KHR_surfaceless_context ,  
     EGL_KHR_gl_texture_cubemap_image ,   EGL_EXT_create_context_robustness ,  
     EGL_KHR_cl_event2 
 EGL_CLIENT_APIS :   OpenGL_ES 
 GL_VERSION :   OpenGL  ES   3.2   v1 .r14p0 - 01rel0 - git ( 966ed26 ) .f44c85cb3d2ceb87e8be88e7592755c3 
 GL_RENDERER :   Mali - T860 
 GL_EXTENSIONS : 
     GL_ARM_rgba8 ,   GL_ARM_mali_shader_binary ,   GL_OES_depth24 ,  
     GL_OES_depth_texture ,   GL_OES_depth_texture_cube_map ,  
     GL_OES_packed_depth_stencil ,   GL_OES_rgb8_rgba8 ,   GL_EXT_read_format_bgra ,  
     GL_OES_compressed_paletted_texture ,   GL_OES_compressed_ETC1_RGB8_texture ,  
     GL_OES_standard_derivatives ,   GL_OES_EGL_image ,   GL_OES_EGL_image_external ,  
     GL_OES_EGL_image_external_essl3 ,   GL_OES_EGL_sync ,   GL_OES_texture_npot ,  
     GL_OES_vertex_half_float ,   GL_OES_required_internalformat ,  
     GL_OES_vertex_array_object ,   GL_OES_mapbuffer ,  
     GL_EXT_texture_format_BGRA8888 ,   GL_EXT_texture_rg ,  
     GL_EXT_texture_type_2_10_10_10_REV ,   GL_OES_fbo_render_mipmap ,  
     GL_OES_element_index_uint ,   GL_EXT_shadow_samplers ,  
     GL_OES_texture_compression_astc ,   GL_KHR_texture_compression_astc_ldr ,  
     GL_KHR_texture_compression_astc_hdr ,  
     GL_KHR_texture_compression_astc_sliced_3d ,   GL_KHR_debug ,  
     GL_EXT_occlusion_query_boolean ,   GL_EXT_disjoint_timer_query ,  
     GL_EXT_blend_minmax ,   GL_EXT_discard_framebuffer ,  
     GL_OES_get_program_binary ,   GL_OES_texture_3D ,   GL_EXT_texture_storage ,  
     GL_EXT_multisampled_render_to_texture ,   GL_OES_surfaceless_context ,  
     GL_OES_texture_stencil8 ,   GL_EXT_shader_pixel_local_storage ,  
     GL_ARM_shader_framebuffer_fetch ,  
     GL_ARM_shader_framebuffer_fetch_depth_stencil ,   GL_ARM_mali_program_binary ,  
     GL_EXT_sRGB ,   GL_EXT_sRGB_write_control ,   GL_EXT_texture_sRGB_decode ,  
     GL_KHR_blend_equation_advanced ,   GL_KHR_blend_equation_advanced_coherent ,  
     GL_OES_texture_storage_multisample_2d_array ,   GL_OES_shader_image_atomic ,  
     GL_EXT_robustness ,   GL_EXT_draw_buffers_indexed ,  
     GL_OES_draw_buffers_indexed ,   GL_EXT_texture_border_clamp ,  
     GL_OES_texture_border_clamp ,   GL_EXT_texture_cube_map_array ,  
     GL_OES_texture_cube_map_array ,   GL_OES_sample_variables ,  
     GL_OES_sample_shading ,   GL_OES_shader_multisample_interpolation ,  
     GL_EXT_shader_io_blocks ,   GL_OES_shader_io_blocks ,  
     GL_EXT_tessellation_shader ,   GL_OES_tessellation_shader ,  
     GL_EXT_primitive_bounding_box ,   GL_OES_primitive_bounding_box ,  
     GL_EXT_geometry_shader ,   GL_OES_geometry_shader ,  
     GL_ANDROID_extension_pack_es31a ,   GL_EXT_gpu_shader5 ,   GL_OES_gpu_shader5 ,  
     GL_EXT_texture_buffer ,   GL_OES_texture_buffer ,   GL_EXT_copy_image ,  
     GL_OES_copy_image ,   GL_EXT_color_buffer_half_float ,  
     GL_EXT_color_buffer_float ,   GL_EXT_YUV_target ,   GL_OVR_multiview ,  
     GL_OVR_multiview2 ,   GL_OVR_multiview_multisampled_render_to_texture ,  
     GL_KHR_robustness ,   GL_KHR_robust_buffer_access_behavior ,  
     GL_EXT_draw_elements_base_vertex ,   GL_OES_draw_elements_base_vertex 

es2gears работает нормально, но частота кадров немного ниже.

Нам удалось запустить glmark2-es2 после его установки:

apt  install  glmark2 - es2 

Результат составил 42, при этом некоторые тесты были увеличены до 50 кадров в секунду, потому что видео выводилось на 720p50. Но, затем мы повторили тест glmark2-es2 в неэкранном режиме и решили установить gimp. Через некоторое время произошла ошибка, и драйверы 3D GPU перестали работать:

khadas@Khadas:~$ glmark2-es2
Error: eglInitialize() failed with error: 0x3001
Error: eglInitialize() failed with error: 0x3001
Error: main: Could not initialize canvas

Мы переустановили прошивку с помощью rk-flash-tool, но результат остался прежним, и Khadas не смог вовремя предоставить решение. 

Воспроизведение видео Khadas Edge

При попытке воспроизвести видео с раздела NTFS на USB-накопителе или скопировать файлы с USB-накопителя на флэш-карту eMMC, соединение часто прерывалось, прерывая воспроизведение видео или копирование файла. Вот как это будет выглядеть в журнале ядра:

[   3224.443270 ]   usb   5 - 1 :   USB  disconnect ,   device  number   5 
 [   3224.445235 ]   sd   3 : 0 : 0 : 0 :   [ sda ]   tag #0 uas_zap_pending 0 uas-tag 1 inflight: CMD  
 [   3224.445255 ]   sd   3 : 0 : 0 : 0 :   [ sda ]   tag #0 CDB: opcode=0x28 28 00 3d 09 07 80 00 00 08 00 
 [   3224.445385 ]   sd   3 : 0 : 0 : 0 :   [ sda ]   tag #0 UNKNOWN(0x2003) Result: hostbyte=0x01 driverbyte=0x00 
 [   3224.445394 ]   sd   3 : 0 : 0 : 0 :   [ sda ]   tag #0 CDB: opcode=0x28 28 00 3d 09 07 80 00 00 08 00 
 [   3224.445402 ]   blk_update_request :   I / O   error ,   dev  sda ,   sector   1024001920 
 [   3224.456266 ]   sd   3 : 0 : 0 : 0 :   [ sda ]   Synchronizing  SCSI  cache 
 [   3224.531000 ]   sd   3 : 0 : 0 : 0 :   [ sda ]   Synchronize  Cache ( 10 )   failed :   Result :   hostbyte = 0x07   driverbyte = 0x00 
 [   3224.964000 ]   usb   5 - 1 :   new   high - speed  USB  device  number   6   using  ehci - platform 

В какой-то момент нам наконец-то удалось воспроизвести видео 1080p60 с mpv, но в этот момент оно основывалось на программном декодировании, и видео было очень нестабильным.

Непонятно, как плавно воспроизводить видео 1080p или 4K в Ubuntu 18.04, поэтому вместо этого вам, возможно, придется использовать изображение LibreELEC, если это то, что вам нужно. До сих пор нам не удавалось воспроизводить видео ни на одной из плат RK3399, которые тестировались с помощью прошивки Ubuntu Desktop.

Просмотр веб-страниц в Khadas Captain

Образы Ubuntu 18.04 поставляются с предустановленным Chromium.

Однако, тайские шрифты отсутствуют, поэтому с этим языком символы будут отображаться в виде блоков при доступе к Google и Facebook, поэтому мы установили тайские шрифты:

sudo  apt  install  fonts - thai - tlwg 

Мы хотели установить поддержку тайского языка и соответствующую клавиатуру, но это не удалось из-за проблем с разрешениями:

rg .freedesktop .PolicyKit .Error .Failed :   ( 'system-bus-name' ,   { 'name' :   ':1.78' } ) :   org .debian .apt .install - or - remove - packages 

Далее следуют сообщения об ошибках:

Вам не разрешено выполнять это действие. У вас нет необходимых прав для выполнения этого действия.

Это небольшая проблема, которую легко исправить.

В целом «стандартный» просмотр веб-страниц работал хорошо, как и на других платах RK3399. Однако, нам не удалось сыграть в Candy Crush Saga в Facebook, так как отсутствует флеш-плеер:

Не обнаружен Флэш Плэер. Требуется версия 11.0.0.

Видео YouTube может воспроизводиться с разрешением 720p с очень небольшим количеством пропущенных кадров, но отчетливо видны некоторые разрывы. На нашей плате не работает ускорение 3D-графики, но мы все равно посетил демонстрацию WelGL Quake, и неудивительно, что всплыло сообщением об ошибке:

Извините, но ваш браузер не поддерживает WebGL или не имеет его.

Флэш-память eMMC и USB-накопитель

Давайте запустим обычный тест iozone во флэш-памяти eMMC:

khadas @ Khadas : ~ $   iozone   iozone   - e   - I   - a   - s   100M   - r   4k   - r   16k   - r   512k   - r   1024k   - r   16384k   - i   0   - i   1   - i   2 
  Iozone :   Performance  Test   of  File   I / O 
          Version   $Revision :   3.429   $ 
  Compiled  for   64   bit  mode . 
  Build :   linux  
 
 
  Output  is   in   kBytes / sec 
  Time   Resolution   =   0.000001   seconds . 
  Processor  cache  size  set  to   1024   kBytes . 
  Processor  cache  line  size  set  to   32   bytes . 
  File   stride  size  set  to   17   *   record  size . 
                                                               random     random      bkwd     record     stride                                     
               kB   reclen     write    rewrite     read      reread     read       write       read     rewrite       read     fwrite  frewrite     fread   freread 
           102400         4      11828      13354      15267      13684      17186      21738                                                           
           102400        16      46154      47429      67887      68979      72140      45976                                                           
           102400       512      49017      48523     252322     254329     223441      48436                                                           
           102400      1024      48760      49352     267336     267311     254040      48286                                                           
           102400     16384      49149      49470     285466     298166     274397      49097                                                           
 
 iozone  test   complete . 

Скорость последовательного чтения до 300 МБ / с, скорость последовательной записи до 50 МБ / с и случайные значения ввода-вывода также выглядят здесь довольно неплохо.

Но, затем переключаемся на производительность USB-накопителя, и тест производительности NTFS не завершился:

khadas @ Khadas : / media / khadas / USB3_NTFS $   iozone   iozone   - e   - I   - a   - s   1000M   - r   4k   - r   16k   - r   512k   - r   1024k   - r   16384k   - i   0   - i   1   - i   2 
  Iozone :   Performance  Test   of  File   I / O 
          Version   $Revision :   3.429   $ 
  Compiled  for   64   bit  mode . 
  Build :   linux  
 
  Output  is   in   kBytes / sec 
  Time   Resolution   =   0.000001   seconds . 
  Processor  cache  size  set  to   1024   kBytes . 
  Processor  cache  line  size  set  to   32   bytes . 
  File   stride  size  set  to   17   *   record  size . 
                                                               random     random      bkwd     record     stride                                     
               kB   reclen     write    rewrite     read      reread     read       write       read     rewrite       read     fwrite  frewrite     fread   freread 
          1024000         4      14294      16520      26406      26594 
 Error  reading  block  at   364781568 
 read :   Input / output  error 

После еще двух попыток, переключаемся на EXT-4, и все работает нормально, так что, возможно, у нас действительно есть проблема с оборудованием в разделе NTFS…

khadas @ Khadas : / media / khadas / USB3_EXT4 $   iozone   - e   - I   - a   - s   1000M   - r   4k   - r   16k   - r   512k   - r   1024k   - r   16384k   - i   0   - i   1   - i   2 
  Iozone :   Performance  Test   of  File   I / O 
          Version   $Revision :   3.429   $ 
  Compiled  for   64   bit  mode . 
  Build :   linux  
 
  Contributors : William  Norcott ,   Don  Capps ,   Isom  Crawford ,   Kirby  Collins 
               Al  Slater ,   Scott  Rhine ,   Mike  Wisner ,   Ken  Goss 
               Steve  Landherr ,   Brad  Smith ,   Mark  Kelly ,   Dr .   Alain  CYR , 
               Randy  Dunlap ,   Mark  Montague ,   Dan  Million ,   Gavin  Brebner , 
               Jean - Marc  Zucconi ,   Jeff  Blomberg ,   Benny  Halevy ,   Dave  Boone , 
               Erik  Habbinga ,   Kris  Strecker ,   Walter  Wong ,   Joshua  Root , 
               Fabrice  Bacchella ,   Zhenghua  Xue ,   Qin  Li ,   Darren  Sawyer , 
               Vangel  Bojaxhi ,   Ben  England ,   Vikentsi  Lapa . 
 
  Run  began :   Sat  Dec   22   09 : 53 : 40   2018 
 
  Include  fsync  in   write   timing 
  O_DIRECT  feature  enabled 
  Auto  Mode 
  File   size  set  to   1024000   kB 
  Record  Size   4   kB 
  Record  Size   16   kB 
  Record  Size   512   kB 
  Record  Size   1024   kB 
  Record  Size   16384   kB 
  Command   line  used :   iozone   - e   - I   - a   - s   1000M   - r   4k   - r   16k   - r   512k   - r   1024k   - r   16384k   - i   0   - i   1   - i   2   iozone 
  Output  is   in   kBytes / sec 
  Time   Resolution   =   0.000001   seconds . 
  Processor  cache  size  set  to   1024   kBytes . 
  Processor  cache  line  size  set  to   32   bytes . 
  File   stride  size  set  to   17   *   record  size . 
                                                               random     random      bkwd     record     stride                                     
               kB   reclen     write    rewrite     read      reread     read       write       read     rewrite       read     fwrite  frewrite     fread   freread 
          1024000         4       5852       6369       7682       7613        407        267                                                           
          1024000        16      14726      15352      18142      17968       1490        988                                                           
          1024000       512      27818      28583      32034      32104       9939      18701                                                           
          1024000      1024      30065      30320      32038      32272      19148      29809                                                           
          1024000     16384      32128      32242      33187      33223      32581      32148

Значения действительно ниже — около 33 МБ / с для чтения и записи, и затем нам стало понятно, что USB-порт на одном из краев платы — USB 2.0, поэтому,  переносим накопитель на порт USB 3.0, и результаты были соответствующие:

khadas @ Khadas : / media / khadas / USB3_EXT4 $   iozone   iozone   - e   - I   - a   - s   100M   - r   4k   - r   16k   - r   512k   - r   1024k   - r   16384k   - i   0   - i   1   - i   2 
  Iozone :   Performance  Test   of  File   I / O 
          Version   $Revision :   3.429   $ 
  Compiled  for   64   bit  mode . 
  Build :   linux  
 
  Output  is   in   kBytes / sec 
  Time   Resolution   =   0.000001   seconds . 
  Processor  cache  size  set  to   1024   kBytes . 
  Processor  cache  line  size  set  to   32   bytes . 
  File   stride  size  set  to   17   *   record  size . 
                                                               random     random      bkwd     record     stride                                     
               kB   reclen     write    rewrite     read      reread     read       write       read     rewrite       read     fwrite  frewrite     fread   freread 
           102400         4      14857      19350      22412      18319        329        595                                                           
           102400        16      50996      62250      59027      68382       2106       7009                                                           
           102400       512      90509      89635      94827      96983      34258      51358                                                           
           102400      1024      90524      89672      95280      97579      49900      60626                                                           
           102400     16384      90892      90758      93144      95004      89712      86382                                                           
 
 iozone  test   complete . 

Скорость последовательного чтения около 93 МБ / с и скорость последовательной записи 91 МБ / с.

В качестве примечания: поскольку тесты занимают время на жестком диске, мы попытались выполнить некоторую отладку / мониторинг, сначала проверив системный журнал, но он заполнен сообщением, связанным с ИК-пультом дистанционного управления:

tail   - f   / var / log / syslog  
 Dec   23   07 : 06 : 44   localhost  lircd [ 889 ] :   lircd - 0.10.0 [ 889 ] :   Error :   Cannot  glob   / sys / class / rc / rc0 / input [ 0 - 9 ] * / event [ 0 - 9 ] * 
 Dec   23   07 : 06 : 44   localhost  lircd - 0.10.0 [ 889 ] :   Error :   Cannot  glob   / sys / class / rc / rc0 / input [ 0 - 9 ] * / event [ 0 - 9 ] * 
 Dec   23   07 : 06 : 45   localhost  lircd [ 889 ] :   lircd - 0.10.0 [ 889 ] :   Error :   Cannot  glob   / sys / class / rc / rc0 / input [ 0 - 9 ] * / event [ 0 - 9 ] * 
 Dec   23   07 : 06 : 45   localhost  lircd - 0.10.0 [ 889 ] :   Error :   Cannot  glob   / sys / class / rc / rc0 / input [ 0 - 9 ] * / event [ 0 - 9 ] * 
 Dec   23   07 : 06 : 46   localhost  lircd [ 889 ] :   lircd - 0.10.0 [ 889 ] :   Error :   Cannot  glob   / sys / class / rc / rc0 / input [ 0 - 9 ] * / event [ 0 - 9 ] * 
 Dec   23   07 : 06 : 46   localhost  lircd - 0.10.0 [ 889 ] :   Error :   Cannot  glob   / sys / class / rc / rc0 / input [ 0 - 9 ] * / event [ 0 - 9 ] * 
 Dec   23   07 : 06 : 47   localhost  lircd [ 889 ] :   lircd - 0.10.0 [ 889 ] :   Error :   Cannot  glob   / sys / class / rc / rc0 / input [ 0 - 9 ] * / event [ 0 - 9 ] * 
 Dec   23   07 : 06 : 47   localhost  lircd - 0.10.0 [ 889 ] :   Error :   Cannot  glob   / sys / class / rc / rc0 / input [ 0 - 9 ] * / event [ 0 - 9 ] * 

и iotop тоже не работал:

sudo iotop
Traceback (most recent call last):
  File "/usr/sbin/iotop", line 17, in <module>
    main()
  File "/usr/lib/python3/dist-packages/iotop/ui.py", line 620, in main
    main_loop()
  File "/usr/lib/python3/dist-packages/iotop/ui.py", line 610, in <lambda>
    main_loop = lambda: run_iotop(options)
  File "/usr/lib/python3/dist-packages/iotop/ui.py", line 508, in run_iotop
    return curses.wrapper(run_iotop_window, options)
  File "/usr/lib/python3.6/curses/__init__.py", line 94, in wrapper
    return func(stdscr, *args, **kwds)
  File "/usr/lib/python3/dist-packages/iotop/ui.py", line 501, in run_iotop_window
    ui.run()
  File "/usr/lib/python3/dist-packages/iotop/ui.py", line 155, in run
    self.process_list.duration)
  File "/usr/lib/python3/dist-packages/iotop/ui.py", line 434, in refresh_display
    lines = self.get_data()
  File "/usr/lib/python3/dist-packages/iotop/ui.py", line 415, in get_data
    return list(map(format, processes))
  File "/usr/lib/python3/dist-packages/iotop/ui.py", line 388, in format
    cmdline = p.get_cmdline()
  File "/usr/lib/python3/dist-packages/iotop/data.py", line 292, in get_cmdline
    proc_status = parse_proc_pid_status(self.pid)
  File "/usr/lib/python3/dist-packages/iotop/data.py", line 196, in parse_proc_pid_status
    key, value = line.split(':\t', 1)
ValueError: not enough values to unpack (expected 2, got 1)
Error in sys.excepthook:

Но это, похоже, ошибка с iotop при использовании последней версии Python. Одной из причин могло быть понижение версии Python, но вместо этого использовался:

watch -n1 iostat -hm

для того, чтобы контролировать входы / выходы в разделы.

Производительность сети — Gigabit Ethernet и 802.11ac WiFi 

Давайте проверим производительность Gigabit Ethernet с iperf, начиная с полнодуплексной передачи данных:

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
 Client  connecting  to   192.168.1.52 ,   TCP  port   5001 
 TCP  window  size :    332   KByte   ( default ) 
 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
 [    6 ]   local   192.168.1.22   port   57042   connected  with   192.168.1.52   port   5001 
 [   ID ]   Interval        Transfer      Bandwidth 
 [    6 ]    0.0 - 60.0   sec    3.24   GBytes     464   Mbits / sec 
 [    4 ]    0.0 - 60.0   sec    5.46   GBytes     781   Mbits / sec 

Типично для платформы Rockchip RK3399. Результат загрузки выглядит хорошо …

[  4] local 192.168.1.22 port 5001 connected with 192.168.1.52 port 59110
[  4]  0.0-60.0 sec  5.75 GBytes   822 Mbits/sec

а скачивание близко к пределу:

[    3 ]   local   192.168.1.22   port   57168   connected  with   192.168.1.52   port   5001 
 [   ID ]   Interval        Transfer      Bandwidth 
 [    3 ]    0.0 - 60.0   sec    6.57   GBytes     940   Mbits / sec 

Таким образом, Gigabit Ethernet работает так, как и ожидалось.

Время проверить работоспособность WiFi 5 (802.11ac). Обратите внимание, что у нас плата Khadas Edge Basic с модулем AP6356S, в то время как платы Edge Pro и Max поставляются с AP6398S, которые поддерживают RSDB (Real Simulataneous Dual Band) и должны предлагать еще лучшую производительность.

802.11ac WiFi результат загрузки:

[    4 ]   local   192.168.1.22   port   5001   connected  with   192.168.1.87   port   34252 
 [   ID ]   Interval        Transfer      Bandwidth 
 [    4 ]    0.0 - 60.0   sec    1.55   GBytes     222   Mbits / sec 

802.11ac WiFi результат скачивания:

[  3] local 192.168.1.22 port 57168 connected with 192.168.1.52 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-60.0 sec  6.57 GBytes   940 Mbits/sec

Часто обнаруживали асимметрию между загрузкой и скачиванием, но обычно с преимуществом по части скачивания. В случае с Khadas Edge, наоборот, и нам пришлось дважды проверить это, чтобы подтвердить. Загрузка 222 Мбит / с очень хороша с используемым маршрутизатором, но скачивание 104 Мбит / с может быть лучше, так как некоторые другие платформы могут достигать чуть более 250 Мбит / с.


Пропускная способность Wi-Fi данных в Мбит / с 

Альтернативный режим USB-C DisplayPort на Кhadas Captain

Когда мы подключили адаптер MINIX NEO-C plus USB-C к плате RockPro64 RK3399, чтобы использовать альтернативный режим USB-C DisplayPort через HDMI, он не работал как ожидалось(хотя сейчас это можно исправить), имелась проблема с Khadas Edge.

Просто перемещаем кабель HDMI, который был подключен к порту HDMI на Khadas Edge, к порту HDMI на адаптере MINIX USB-C, и через несколько секунд изображение заработало. Сейчас у нас есть доступ только к одному телевизору, поэтому нам не удалось протестировать настройки с двумя мониторами и такие вещи, как расширенный рабочий стол.

Заключение

Аппаратный дизайн выглядит солидно с быстрой флэш-памятью eMMC, отличной производительностью Gigabit Ethernet, приемлемой производительностью WiFi AC, двойным видеовыходом и многим другим.

Но, в то время как, в основном используется ,образ Ubuntu 18.04 LXDE, было несколько проблем, таких как ускоренная поддержка 3D-графики, даже после переустановки прошивки, и отсутствие аппаратного декодирования видео, что является повторяющимися проблемами на платформах RK3399. Мы также столкнулись с несколькими менее важными проблемами программного обеспечения, такими как сбой при установке языковых пакетов, а также с некоторыми потенциальными проблемами (энергопотреблением) при подключении жесткого диска USB, который время от времени отключались при подключении к порту USB 2.0.

Но, имейте в виду, что платы Khadas Edge и Captain еще не поставляются, поэтому это скорее провел бета-тестирование, и мы уверены, что Shenzhen Wesion рассмотрит проблемы и исправит многие из них, прежде чем заказы будут отправлены пользователям, в январе.

Краудфандинговая кампания Khadas Edge все еще продолжается, и вы можете поддержать проект на Indiegogo, если вы заинтересованы.

Благодарим сайт cnx-software.com за предоставленную информацию.

Оригинал статьи опубликован здесь.

0 0 vote
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
View all comments