Jump to content
Sign in to follow this  

midi keyboard not supported in kernel

Recommended Posts

I have a Arturia midi keyboard connected to the USB port on a pcduino:

The software I want to use is PureData (pd-extended in case anyone has experience in that). The error in software is "Couldn't open alsa  sequencer

The pcDuino doesn't seem to support the midi sequencer. It seems that it is not supported in de kernel. I found that BeagleBoard had the same problem thatwas patched (config file changed) and needed to rebuild the kernel, see:

This lookes rather difficult for me and I was wondering if there is a way to fix this on pcDuino?

Output on the terminal:

puredata@puredata:~$ lsmod
Module                  Size  Used by
sw_interrupt            2424  0 
gpio                    4509  0 
pwm                     5050  0 
adc                     1671  0 
hardwarelib             1551  4 sw_interrupt,gpio,pwm,adc
rt5370sta             616973  0 
8192cu                537008  0 
mali_drm                2087  1 
drm                   156992  2 mali_drm
mali                   91210  0 
disp_ump                 823  0 
ump                    43938  4 mali,disp_ump
puredata@puredata:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 2: sun4isndhdmi [sun4i-sndhdmi], device 0: SUN4I-HDMIAUDIO sndhdmi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
puredata@puredata:~$ amidi -l
Dir Device    Name
IO  hw:0,0,0  Analog Experience - The Player 
puredata@puredata:~$ lsusb
Bus 002 Device 002: ID 1c75:0202  
Bus 003 Device 006: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 007: ID 046d:c050 Logitech, Inc. RX 250 Optical Mouse
Bus 003 Device 008: ID 046d:c31d Logitech, Inc. Media Keyboard K200
puredata@puredata:~$ lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=sw-ohci/1p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=sw-ehci/1p, 480M
    |__ Port 1: Dev 6, If 0, Class=hub, Driver=hub/4p, 480M
        |__ Port 2: Dev 7, If 0, Class=HID, Driver=usbhid, 1.5M
        |__ Port 3: Dev 8, If 0, Class=HID, Driver=usbhid, 1.5M
        |__ Port 3: Dev 8, If 1, Class=HID, Driver=usbhid, 1.5M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=sw-ohci/1p, 12M
    |__ Port 1: Dev 2, If 0, Class=audio, Driver=snd-usb-audio, 12M
    |__ Port 1: Dev 2, If 1, Class=audio, Driver=snd-usb-audio, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=sw-ehci/1p, 480M

As far as I know at tested on a Ubuntu server lsmod should return snd_seq for the midi keyboard like:

puredata@puredata:~$ lsmod
Module                  Size  Used by
snd_usb_audio         105599  0 
snd_pcm                89104  1 snd_usb_audio
snd_page_alloc          8620  1 snd_pcm
snd_hwdep               6660  1 snd_usb_audio
snd_usbmidi_lib        21345  1 snd_usb_audio
snd_seq_midi            5932  0 
snd_rawmidi            22239  2 snd_usbmidi_lib,snd_seq_midi
snd_seq_midi_event      7291  1 snd_seq_midi
snd_seq                57608  2 snd_seq_midi,snd_seq_midi_event
snd_timer              23850  2 snd_pcm,snd_seq
snd_seq_device          6912  3 snd_seq_midi,snd_rawmidi,snd_seq
snd                    64277  8 snd_usb_audio,snd_pcm,snd_hwdep,snd_usbmidi_lib,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
soundcore               1240  1 snd

Share this post

Link to post
Share on other sites

I tried this compiling of the driver you told me like in http://www.pcduino.com/?p=1327 but I dont know where to find the drivers to use and how to make the change permanent. I now follow this http://www.pcduino.com/?p=957. Installing a 32-bit ubuntu server now.

Maybe you would like to clarify the first method on how to find and compile a sequencer midi driver.

Share this post

Link to post
Share on other sites

I need some help to solve this. I could not find the midi support while using the ncurses

make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

So i edited the configuration file kernel/patch/linux-sunxi/arch/arm/configs/sun4i_defconfig manually with:

# CONFIG_LOGO_LINUX_VGA16 is not set
# CONFIG_SND_DEBUG is not set
# CONFIG_SND_OPL3_LIB_SEQ is not set
# CONFIG_SND_OPL4_LIB_SEQ is not set
# CONFIG_SND_EMU10K1_SEQ is not set

Now the pcduino would not boot (no display) with debug output: 

HELLO! BOOT0 is starting!
boot0 version : 1.5.0
dram size =1024
Succeed in opening nand flash.
Succeed in reading Boot1 file head.
The size of Boot1 is 0x00056000.
The file stored in 0X00000000 of block 2 is perfect.
Check is correct.
Ready to disable icache.
Succeed in loading Boot1.
Jump to Boot1.
[       0.179] boot1 version : 1.5.0
[       0.179] pmu type = 3
[       0.180] bat vol = 0
[       0.212] axi:ahb:apb=3:2:2
[       0.212] set dcdc2=1400, clock=1008 successed
[       0.214] key
[       0.227] no key found
[       0.227] flash init start
[       0.239] flash init finish
[       0.241] fs init ok
[       0.242] fattype FAT16
[       0.242] fs mount ok
[       0.248] script finish
[       0.249] power finish
[       0.258] BootMain start
[       0.258] 0
[       0.273] usbdc_vol = 4000, usbdc_cur = 0
[       0.273] usbpc_vol = 4000, usbpc_cur = 0
[       0.276] init to usb pc
[       0.279] set pc
[       0.306] WRN:L777(de_bsp/de/disp_clk.c):Can't assign PLL for screen0, pll_clk:-1
[       0.308] power_start=0x00000002
[       0.311] pre sys mode
[       0.314] startup status = -1
[       0.317] key value = 0
[       0.320] recovery key high 6, low 4
[       0.323] unable to find fastboot_key key_max value
[       0.331] test for multi os boot with display
[       0.333] logo name is invalid or dont need show logo
[       0.338] load kernel start
[       0.359] load kernel successed
[       0.359] start address = 0x4a000000
[       0.361] power exit detect
[       0.364] usb exit

U-Boot 2011.09-rc1-00000-ga044d4f (Mar 18 2013 - 20:14:23) Allwinner Technology

CPU:   SUNXI Family
Board: A10-EVB
DRAM:  1 GiB
boot type: 2
NAND:  1900 MiB
In:    serial
Out:   serial
Err:   serial
--------fastboot partitions--------
-total partitions:5-
-name-        -start-       -size-
bootloader  : 100000        2000000
env         : 2100000       200000
boot        : 2300000       1000000
rootfs      : 3300000       70800000
UDISK       : 73b00000      3100000
no misc partition is found
Hit any key to stop autoboot:  0
reading script.bin

44608 bytes read
reading uImage

6240744 bytes read
## Booting kernel from Legacy Image at 48000000 ...
   Image Name:   Linux-3.4.29+
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    6240680 Bytes = 6 MiB
   Load Address: 40008000
   Entry Point:  40008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK

Starting kernel ...

I already restored the system. Can someone explain to me what is being done wrong?

Share this post

Link to post
Share on other sites

that is your cross_compile problem.you must delete cross_compile which you used .
and type:
sudo apt-get install g++-arm-linux-gnueabihf
you will solve the problem while the new uImage

Share this post

Link to post
Share on other sites

With the new compiler and new kernel with the posted config the pcduino boots again but when connecting the midi keyboard it still will not list the snd_seq drivers with lsmod and the error remains "couldn't open alsa sequencer"

Share this post

Link to post
Share on other sites

the keyboard does not have a linux driver and i dont have source code for it to compile. But on Ubuntu the midi keyboards works on the snd_seq ect like posted in my first post. I only want to copy that, where can i download or copy it from? The compiler doesnt show errors so you should think it has all essentials




Share this post

Link to post
Share on other sites

Hi Jaap,
I saw the kernel,
$make linuc-config
Device Drivers  --->
 Input device support  --->

  •    Keyboards  --->

                              AT keyboard
At recent, pcDuino only supports AT keyboard, you need config kernel for your keyboard.

Share this post

Link to post
Share on other sites

There are no midi keyboards in linux-config, like i told i adapted the config manualy but do i need to copy files or something? The whole thing is a little vague to me. It seems it is not that easy as just install a driver. The kernel needs to be extended to support midi... Hope someone can clarify this subject. On Beagleboard it seems easier because somebody already compiled a kernel for it. My kernels compiles are not solving the problem like i thought.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this