Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

Dual Ultrastik 360 with Dual Aimtrak Problem



  • Hello, first time poster here. So, here are my system specs.
    PI3
    Retropie 4.3
    TWO Ultrastik plugged in USB hub
    TWO Aimtrak plugged in USB hub
    Keyboard in USB 1 on PI
    Flash Drive in USB 2 on PI
    Aimtrak light bar in USB hub
    Externally powered USB hub in USB 0 on PI

    OK, so the root of the problem is, my system basically detects 4 controllers. And only the ones in ports 0 and 1 seem to work. See, I have been using just the stiks for several months now. NO PROBLEMS. they are assigned ID 1 and ID 2 using the Ultimark Software. The system always found them on ports 0 and 1. So a couple days ago I bought 2 Aimtrak guns. Originally I set their IDs to 3 and 4, just in case they conflicted with the stiks. I tried and tried but could never get them to work in a game, using Advancemame 1.4. Yes, I edited the setup files, Yes I ran the handy utility in the toolkit. Yes, they work perfectly in GUNCONF. Yes, they are setup an mice. Sorry, not trying to be a jerk, just trying to eliminate responses to try those things.
    I could get the buttons to be recognized by using TAB and programming them, but they would never move the cross hairs. I tried changing their IDs and that never did anything. It wasnt until I removed my stiks and rebooted then they both started working. YES, I had rebooted dozens of times before. I was finally happy. The guns were working and the stiks were working, or so I thought. It wasnt until I tried to play a regular NES game that I found the stiks were NOT working. They do work in retropie / ES menus, but not once you start an emulator. I could make them work in MAME emulators using TAB and programming them.
    What seems to be happening, is, that all the emulators are looking at ports 0 and 1 for players 1 and 2 respectively. So while I was playing gun games, they worked because they were on ports 0 and 1 since I rebooted with them plugged in first. Note, If i remove everything and just plug in one device, it assigns it to port 0 regardless of which actual USB port it is plugged into. The next device to be plugged in gets port 1, and so on. But back to the problem. If, my stiks are in port 0 and 1, making them work with NES and other emulators the guns wont work cause, remember player one looks at port 0, doesnt care what is plugged in there. Player two, port 1, three, port 2, and four, port 3.
    So, the way I see it, I need one of the following solutions: (I am also open to take suggestions)

    1. Plug in the stiks first, taking ports 0 and 1, making NES and other emulators work, and the guns second, taking ports 2 and 3. Somehow program AdvanceMAME 1.4 to look at ports 2 and 3 for player 1 and 2 control, but only in gun based games. (could be in all games because I can use TAB to program other games to see stiks)
    2. Plug the guns in first, taking ports 0 and 1, and sticks second, 2 and 3. Somehow tell all other emulators (Retroarch) to look at ports 2 and 3 for player 1 and 2 control. (as I understand it, Retroarch holds the control settings for ES and most other emulators such as NES, SNES, N64.)

    Any other advise would be greatly appreciated.
    THANKS



  • @tsgeoman I think it is OK to troubleshoot one thing at a time, as advancemame settings will never conflict with any of the retroarch stuff.

    I think we need to see your advancemame1.4 .rc file. Pastebin perhaps? That should have all of the mapping and device details, and you should be able to specify which devices are mapped to Player1 or two etc.



  • here is the file advmame-1.4.rc

    debug_crash no
    debug_rawsound no
    debug_speedmark no
    device_alsa_device default
    device_alsa_mixer channel
    device_color_bgr15 yes
    device_color_bgr16 yes
    device_color_bgr24 yes
    device_color_bgr32 yes
    device_color_bgr8 yes
    device_color_palette8 yes
    device_color_yuy2 yes
    device_joystick auto
    device_keyboard raw
    device_mouse raw
    device_raw_firstkeyhack no
    device_raw_mousedev[0] /dev/input/mouse0
    device_raw_mousedev[1] /dev/input/mouse1
    device_raw_mousedev[2] /dev/input/mouse2
    device_raw_mousedev[3] /dev/input/mouse3
    device_raw_mousetype[0] ps2
    device_raw_mousetype[1] ps2
    device_raw_mousetype[2] ps2
    device_raw_mousetype[3] ps2
    device_sdl_samples 512
    device_sound alsa
    device_video fb
    device_video_cursor off
    device_video_doublescan yes
    device_video_fastchange no
    device_video_interlace yes
    device_video_output auto
    device_video_overlaysize auto
    device_video_singlescan yes
    dir_artwork /home/pi/RetroPie/roms/mame-advmame/artwork
    dir_diff /home/pi/RetroPie/roms/mame-advmame/diff
    dir_hi /home/pi/RetroPie/roms/mame-advmame/hi
    dir_image /home/pi/RetroPie/roms/mame-advmame
    dir_inp /home/pi/RetroPie/roms/mame-advmame/inp
    dir_memcard /home/pi/RetroPie/roms/mame-advmame/memcard
    dir_nvram /home/pi/RetroPie/roms/mame-advmame/nvram
    dir_rom /home/pi/RetroPie/roms/mame-advmame:/home/pi/RetroPie/roms/arcade
    dir_sample /home/pi/RetroPie/roms/mame-advmame/samples
    dir_snap /home/pi/RetroPie/roms/mame-advmame/snap
    dir_sta /home/pi/RetroPie/roms/mame-advmame/nvram
    display_adjust none
    display_antialias yes
    display_artwork_backdrop yes
    display_artwork_bezel no
    display_artwork_crop yes
    display_artwork_overlay yes
    display_aspectx 4
    display_aspecty 3
    display_beam 1
    display_brightness 1
    display_buffer no
    display_color auto
    display_expand 1
    display_flicker 0
    display_flipx no
    display_flipy no
    display_frameskip auto
    display_gamma 1
    display_height 480
    display_intensity 1.5
    display_interlaceeffect none
    display_magnify 1
    display_magnifysize 640
    display_mode auto
    display_pausebrightness 1
    display_resize integer
    display_resizeeffect none
    display_restore yes
    display_rgbeffect none
    display_rol no
    display_ror no
    display_scanlines no
    display_skipcolumns auto
    display_skiplines auto
    display_translucency yes
    display_vsync no
    display_width 640
    include
    input_hotkey yes
    input_idleexit 0
    input_map[coin1] joystick_button[0,7]
    input_map[coin2] joystick_button[1,7]
    input_map[coin5] auto
    input_map[coin6] auto
    input_map[coin7] auto
    input_map[coin8] auto
    input_map[event10] auto
    input_map[event11] auto
    input_map[event12] auto
    input_map[event13] auto
    input_map[event14] auto
    input_map[event1] auto
    input_map[event2] auto
    input_map[event3] auto
    input_map[event4] auto
    input_map[event5] auto
    input_map[event6] auto
    input_map[event7] auto
    input_map[event8] auto
    input_map[event9] auto
    input_map[p1_dialx] auto
    input_map[p1_dialy] auto
    input_map[p1_lightgunx] auto
    input_map[p1_lightguny] auto
    input_map[p1_mousex] auto
    input_map[p1_mousey] auto
    input_map[p1_paddlex] auto
    input_map[p1_paddley] auto
    input_map[p1_pedalbrake] auto
    input_map[p1_pedalgas] auto
    input_map[p1_pedalother] auto
    input_map[p1_stickx] auto
    input_map[p1_sticky] auto
    input_map[p1_stickz] auto
    input_map[p1_trackballx] auto
    input_map[p1_trackbally] auto
    input_map[p2_dialx] auto
    input_map[p2_dialy] auto
    input_map[p2_lightgunx] auto
    input_map[p2_lightguny] auto
    input_map[p2_mousex] auto
    input_map[p2_mousey] auto
    input_map[p2_paddlex] auto
    input_map[p2_paddley] auto
    input_map[p2_pedalbrake] auto
    input_map[p2_pedalgas] auto
    input_map[p2_pedalother] auto
    input_map[p2_stickx] auto
    input_map[p2_sticky] auto
    input_map[p2_stickz] auto
    input_map[p2_trackballx] auto
    input_map[p2_trackbally] auto
    input_map[p3_dialx] auto
    input_map[p3_dialy] auto
    input_map[p3_lightgunx] auto
    input_map[p3_lightguny] auto
    input_map[p3_mahjong_a] auto
    input_map[p3_mahjong_b] auto
    input_map[p3_mahjong_bet] auto
    input_map[p3_mahjong_c] auto
    input_map[p3_mahjong_chance] auto
    input_map[p3_mahjong_chi] auto
    input_map[p3_mahjong_d] auto
    input_map[p3_mahjong_double_up] auto
    input_map[p3_mahjong_e] auto
    input_map[p3_mahjong_f] auto
    input_map[p3_mahjong_flip_flop] auto
    input_map[p3_mahjong_g] auto
    input_map[p3_mahjong_h] auto
    input_map[p3_mahjong_i] auto
    input_map[p3_mahjong_j] auto
    input_map[p3_mahjong_k] auto
    input_map[p3_mahjong_kan] auto
    input_map[p3_mahjong_l] auto
    input_map[p3_mahjong_m] auto
    input_map[p3_mahjong_n] auto
    input_map[p3_mahjong_pon] auto
    input_map[p3_mahjong_reach] auto
    input_map[p3_mahjong_ron] auto
    input_map[p3_mahjong_score] auto
    input_map[p3_mousex] auto
    input_map[p3_mousey] auto
    input_map[p3_paddlex] auto
    input_map[p3_paddley] auto
    input_map[p3_pedalbrake] auto
    input_map[p3_pedalgas] auto
    input_map[p3_pedalother] auto
    input_map[p3_stickx] auto
    input_map[p3_sticky] auto
    input_map[p3_stickz] auto
    input_map[p3_trackballx] auto
    input_map[p3_trackbally] auto
    input_map[p4_dialx] auto
    input_map[p4_dialy] auto
    input_map[p4_lightgunx] auto
    input_map[p4_lightguny] auto
    input_map[p4_mahjong_a] auto
    input_map[p4_mahjong_b] auto
    input_map[p4_mahjong_bet] auto
    input_map[p4_mahjong_c] auto
    input_map[p4_mahjong_chance] auto
    input_map[p4_mahjong_chi] auto
    input_map[p4_mahjong_d] auto
    input_map[p4_mahjong_double_up] auto
    input_map[p4_mahjong_e] auto
    input_map[p4_mahjong_f] auto
    input_map[p4_mahjong_flip_flop] auto
    input_map[p4_mahjong_g] auto
    input_map[p4_mahjong_h] auto
    input_map[p4_mahjong_i] auto
    input_map[p4_mahjong_j] auto
    input_map[p4_mahjong_k] auto
    input_map[p4_mahjong_kan] auto
    input_map[p4_mahjong_l] auto
    input_map[p4_mahjong_m] auto
    input_map[p4_mahjong_n] auto
    input_map[p4_mahjong_pon] auto
    input_map[p4_mahjong_reach] auto
    input_map[p4_mahjong_ron] auto
    input_map[p4_mahjong_score] auto
    input_map[p4_mousex] auto
    input_map[p4_mousey] auto
    input_map[p4_paddlex] auto
    input_map[p4_paddley] auto
    input_map[p4_pedalbrake] auto
    input_map[p4_pedalgas] auto
    input_map[p4_pedalother] auto
    input_map[p4_stickx] auto
    input_map[p4_sticky] auto
    input_map[p4_stickz] auto
    input_map[p4_trackballx] auto
    input_map[p4_trackbally] auto
    input_map[safequit] auto
    input_map[service_coin5] auto
    input_map[service_coin6] auto
    input_map[service_coin7] auto
    input_map[service_coin8] auto
    input_map[start1] joystick_button[0,0]
    input_map[start2] joystick_button[1,0]
    input_map[ui_toggle_ui] auto
    input_steadykey no
    lcd_server none
    lcd_speed 4
    lcd_timeout 500
    misc_bios default
    misc_cheat yes
    misc_cheatfile cheat.dat
    misc_difficulty none
    misc_eventdebug no
    misc_eventfile event.dat
    misc_freeplay no
    misc_hiscorefile hiscore.dat
    misc_lang none
    misc_languagefile english.lng
    misc_mutedemo no
    misc_quiet yes
    misc_safequit yes
    misc_smp no
    misc_timetorun 0
    record_sound yes
    record_sound_time 15
    record_video yes
    record_video_interleave 2
    record_video_time 15
    script_coin1
    script_coin2
    script_coin3
    script_coin4
    script_emulation
    script_event1
    script_event10
    script_event11
    script_event12
    script_event13
    script_event14
    script_event2
    script_event3
    script_event4
    script_event5
    script_event6
    script_event7
    script_event8
    script_event9
    script_led1 on(kdb, 0b1); wait(!event()); off(kdb, 0b1);
    script_led2 on(kdb, 0b10); wait(!event()); off(kdb, 0b10);
    script_led3
    script_play
    script_safequit
    script_start1
    script_start2
    script_start3
    script_start4
    script_turbo while (event()) { toggle(kdb, 0b100); delay(100); } off(kdb, 0b100);
    script_video wait(!event()); set(kdb, 0);
    sound_adjust auto
    sound_equalizer_highvolume 0
    sound_equalizer_lowvolume 0
    sound_equalizer_midvolume 0
    sound_latency 0.05
    sound_mode auto
    sound_normalize no
    sound_samplerate 44100
    sound_samples yes
    sound_volume -3
    sync_fps auto
    sync_resample auto
    sync_speed 1
    sync_startuptime auto
    sync_turbospeed 3
    ui_color[help_other] 000000 808080
    ui_color[help_p1] 000000 ffff00
    ui_color[help_p2] 000000 00ff00
    ui_color[help_p3] 000000 ff0000
    ui_color[help_p4] 000000 00ffff
    ui_color[interface] 000000 ffffff
    ui_color[select] 000000 afffff
    ui_color[tag] 247ef0 ffffff
    ui_font auto
    ui_fontsize auto
    ui_helpimage auto
    ui_translucency 0.8
    input_map[p1_up] joystick_digital[0,0,1,1]
    input_map[p1_down] joystick_digital[0,0,1,0]
    input_map[p1_left] joystick_digital[0,0,0,1]
    input_map[p1_right] joystick_digital[0,0,0,0]
    input_map[p1_doubleright_up]
    input_map[p1_doubleright_down]
    input_map[p1_doubleright_left]
    input_map[p1_doubleright_right]
    input_map[p1_doubleleft_up]
    input_map[p1_doubleleft_down]
    input_map[p1_doubleleft_left]
    input_map[p1_doubleleft_right]
    input_map[p1_button1] joystick_button[0,1]
    input_map[p1_button2] joystick_button[0,3]
    input_map[p1_button3] joystick_button[0,2]
    input_map[p1_button4] joystick_button[0,4]
    input_map[p1_button5] joystick_button[0,5]
    input_map[p1_button6] joystick_button[0,6]
    input_map[p1_button7]
    input_map[p1_button8]
    input_map[p1_button9]
    input_map[p1_button10]
    input_map[p2_up] joystick_digital[1,0,1,1]
    input_map[p2_down] joystick_digital[1,0,1,0]
    input_map[p2_left] joystick_digital[1,0,0,1]
    input_map[p2_right] joystick_digital[1,0,0,0]
    input_map[p2_button1] joystick_button[1,1]
    input_map[p2_button2] joystick_button[1,3]
    input_map[p2_button3] joystick_button[1,2]
    input_map[p2_button4] joystick_button[1,4]
    input_map[p2_button5] joystick_button[1,5]
    input_map[p2_button6] joystick_button[1,6]
    input_map[p2_button7]
    input_map[p2_button8]
    input_map[p2_button9]
    input_map[p2_button10]
    area51/input_map[p1_button1] joystick_button[2,0] mouse_button[0,0]
    pc_duckh/input_map[p1_button1] joystick_button[3,1] mouse_button[2,1] or joystick_digital[3,0,0,1] joystick_digital[3,0,1,0] joystick_digital[3,0,1,1] joystick_button[3,0] mouse_button[2,0] not joystick_digital[3,0,0,1] joystick_digital[3,0,1,0] joystick_digital[3,0,1,1]
    pc_duckh/input_map[p1_button2] joystick_digital[3,0,0,0] joystick_button[3,1] mouse_button[2,1]
    pc_duckh/input_map[start1] joystick_button[1,1]
    pc_duckh/input_map[start2] joystick_button[1,0]
    duckhunt/input_map[p1_lightgun_left]
    duckhunt/input_map[p1_lightgun_right]
    duckhunt/input_map[p1_lightgun_up]
    duckhunt/input_map[p1_lightgun_down]
    le2/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
    le2/input_map[p1_button3] mouse_button[0,1] joystick_button[5,1]
    input_map[ui_toggle_crosshair] joystick_button[1,4]
    duckhunt/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    area51/input_map[start1] joystick_button[2,1] mouse_button[0,1]
    area51/input_map[p1_lightgun_left]
    area51/input_map[p1_lightgun_right]
    area51/input_map[p1_lightgun_up]
    area51/input_map[p1_lightgun_down]
    area51/input_map[p2_lightgun_left]
    area51/input_map[p2_lightgun_right]
    area51/input_map[p2_lightgun_up]
    area51/input_map[p2_lightgun_down]
    area51/input_map[p2_button1] mouse_button[1,0] joystick_button[4,0]
    area51/input_map[start2] mouse_button[1,2] joystick_button[4,2]
    pc_wgnmn/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    pc_wgnmn/input_map[p1_button2] mouse_button[0,1] joystick_button[5,1]
    pc_wgnmn/input_map[start1] mouse_button[0,2] joystick_button[5,2]
    pc_wgnmn/input_map[start2] joystick_button[0,0]
    hogalley/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    hogalley/input_map[p1_lightgun_left]
    hogalley/input_map[p1_lightgun_right]
    hogalley/input_map[p1_lightgun_up]
    hogalley/input_map[p1_lightgun_down]
    timecris/input_map[p1_lightgun_left]
    timecris/input_map[p1_lightgun_right]
    timecris/input_map[p1_lightgun_up]
    timecris/input_map[p1_lightgun_down]
    timecris/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    timecris/input_map[p1_button2] mouse_button[0,1] joystick_button[5,1]
    revx/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    revx/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
    revx/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
    revx/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
    policetr/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    policetr/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
    ptblank2/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    ptblank2/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
    ptblank/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    ptblank/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
    pirates/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    pirates/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
    pirates/input_map[p1_button3] mouse_button[0,1] joystick_button[5,1]
    pirates/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
    pirates/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
    pirates/input_map[p2_button3] joystick_button[3,1] mouse_button[1,1]
    opwolf3/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    opwolf3/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
    opwolf3/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
    opwolf3/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
    opwolfu/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    opwolfu/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
    othunder/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    othunder/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
    othunder/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
    othunder/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
    le2/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
    le2/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
    le2/input_map[p2_button3] joystick_button[3,1] mouse_button[1,1]
    lethalen/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    lethalen/input_map[p2_button2] joystick_button[3,0] mouse_button[1,0]
    lghost/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    lghost/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
    jpark/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    jpark/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
    xtheball/input_map[coin1] mouse_button[0,2] joystick_button[5,2]
    xtheball/input_map[coin3] mouse_button[0,1] joystick_button[5,1]
    xtheball/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    g13knd/input_map[p1_button3] mouse_button[0,1] joystick_button[5,1]
    g13knd/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    g13knd/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
    cryptklr/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    cryptklr/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
    cryptklr/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
    cryptklr/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
    a51mxr3k/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
    a51mxr3k/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    alien3/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    alien3/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
    alien3/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
    alien3/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]
    term2/input_map[p1_button1] mouse_button[0,0] joystick_button[5,0]
    term2/input_map[p1_button2] mouse_button[0,2] joystick_button[5,2]
    term2/input_map[p2_button1] joystick_button[3,0] mouse_button[1,0]
    term2/input_map[p2_button2] joystick_button[3,2] mouse_button[1,2]



  • I think I see what may fix it. If I take

    device_raw_mousedev[0] /dev/input/mouse0
    device_raw_mousedev[1] /dev/input/mouse1

    and make it
    device_raw_mousedev[0] /dev/input/mouse2
    device_raw_mousedev[1] /dev/input/mouse3
    It should look at the device on port 2 and 3 for control of 0 and 1



  • IT WORKED!!! I did the edit like I posted above and that fixed the problem. My stiks are now on port 0 and 1, controlling all emulators players 1 and 2. And the guns are on ports 2 and 3, but with that edit, are controlling players 1 and 2. Thanks for replying. I must have looked at that config file a dozen times and never made the connection that that is where it was assigning the controllers.
    THANKS



  • @tsgeoman Hey, glad I could get you on the right track. That's exactly where I was going to look. Advmame has a fantastically versatile matrix of possibilities when it comes to mapping devices this way. So long as you dont plug in other mouse devices, you should be good to go.



  • @tsgeoman By the way, it is customary to put long pastes like into pastebin.com or similar and simply link to that. for smaller code pastes, you should format them using backticks ``` above and below



  • @caver01 just about to say the same. Scrolling through pages of crap is no fun.



  • @jonnykesh I wouldn't call it crap. I asked him to paste the .rc file. I just wasn't maybe as clear as I needed to be about how to do so.



  • @caver01 ok. I was lazy in my wording. It doesn't make me want to read it. It's obviously / hopefully the right log file.



Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.