Page 1 of 1

Xbox One Controller looses Connenction

PostPosted: Sat Mar 16, 2019 4:55 pm
by Omnivirex
Hi ,

since 2 Firmware Updatetes something odd occures.

My both Controllers Xbox one Elite and Xbox one S , Wireless over Microsoft Wireless Adapter disconnenct.
First the light on the Xbox logo on the xb1 s controlle turnes completly off . Just before the disconnect the light goes on and after several time the disconnect occures.

With the xb1 elite controlle the same issue but there the xb logo is dimm , after a while it turn bright again and after a time the disconnenct occures.

I mostly have to reset the titan two completly to get the controller connected.

Both controller FW is up do date.

The input protocoll is set for ps4 and outprotocoll is set for deafault.

There doesn seem to be a disconnect issue wired though. Except of the xbox button lights.

I use the ps4 elite fixed inputtransaltor. witch should be teporarly solution for triggering the share button function for taking video.

Is it possible to solve the problem with disconnect through firmware rollback ?
Is also tried its with my fixed advanced scrip for xbox elite controller, with same outcome.

Code: Select all
#pragma METAINFO("TGS", 1, 30, "XB1 To PS4 Crossover")
 
#include <xb1.gph>
#include <ps4.gph>
 
#define XB1_GUIDE   XB1_XBOX
 
uint8 statusIn,  protocolIn,  deviceIn;
uint8 statusOut, protocolOut, deviceOut;
 
bool didCombo;
fix32 stick1Deadzone;
fix32 stick2Deadzone;
 
bool touchPadJoystickMappingOn;
 
bool autoRunOn;
fix32 autoRunPercentage;
 
init {
    remapper_disable(XB1_P1);
    remapper_disable(XB1_P2);
    remapper_disable(XB1_P3);
    remapper_disable(XB1_P4);
 
    didCombo = FALSE;
    stick1Deadzone = 15.0;
    stick2Deadzone = 15.0;
 
    touchPadJoystickMappingOn = FALSE;
 
    autoRunOn = FALSE;
    autoRunPercentage = 95.0;
}
 
main {
// -------------------------------------------------------------------------- //
// |         Crossover (XB1 Controller and Elite Controller on PS4)         | //
// -------------------------------------------------------------------------- //
 
 
    statusIn  = port_status(PORT_USB_A, &protocolIn,  &deviceIn);
    statusOut = port_status(PORT_USB_C, &protocolOut, &deviceOut);
 
    if(((protocolIn == PROTOCOL_XB1_WRC) || (protocolIn == PROTOCOL_XB1)) && (protocolOut == PROTOCOL_PS4)) {
 
        //Set the deadzone
         if (abs(get_actual(XB1_RX)) <= stick1Deadzone) {
            set_val(PS4_RX, 0.0);
        }
        if (abs(get_actual(XB1_RY)) <= stick1Deadzone) {
            set_val(PS4_RY, 0.0);
        }
        if (abs(get_actual(XB1_LX)) <= stick2Deadzone) {
            set_val(PS4_LX, 0.0);
        }
        if (abs(get_actual(XB1_LY)) <= stick2Deadzone) {
            set_val(PS4_LY, 0.0);
        }
 
        //Autorun
        if ((autoRunOn) &&
            (sqrt(pow(abs(get_actual(XB1_LX)), 2.0) + pow(abs(get_actual(XB1_LY)), 2.0)) >= autoRunPercentage) &&
            !get_actual(XB1_LT)) {
                //If L3 is pressed when autorun is on, turn it off... some games get thrown off when aiming
                //and then not aiming--this will reset that
                if (get_actual(XB1_LS)) {
                    set_val(PS4_L3, 0.0);
                }
                else {
                    set_val(PS4_L3, 100.0);
                }
 
        }
 
        //Map the joystick to the touchpad while holding down XB1_VIEW
        if ((touchPadJoystickMappingOn) && (get_actual(XB1_VIEW))) {
            if (get_val(XB1_LY) || get_val(XB1_LX))
            {
                set_val(PS4_TOUCH1, 100.0);
                //Use get_val instead of get_actual to utilize the deadzone adjustment above
                set_val(PS4_TOUCH1Y, get_val(XB1_LY));
                set_val(PS4_TOUCH1X, get_val(XB1_LX));
                if (!didCombo) {
                    didCombo = TRUE;
                }
            }
        }
 
        //When XB1_MENU is released, do a touchpad click if a touchpad combo (swipe) did not happen.
        //Also, inhibit any d-pad buttons so they aren't accidentally triggered
        //if XB1_MENU is released before they are.
        if (event_release(XB1_VIEW)) {
            if (get_actual(XB1_UP)) {
                combo_restart(inhibit_XB1_UP);       
            }
            if (get_actual(XB1_DOWN)) {
                combo_restart(inhibit_XB1_DOWN);       
            }
            if (get_actual(XB1_LEFT)) {
                combo_restart(inhibit_XB1_LEFT);       
            }
            if (get_actual(XB1_RIGHT)) {
                combo_restart(inhibit_XB1_RIGHT);       
            }
 
            //Joystick press
            if (get_actual(XB1_LS)) {
                combo_restart(inhibit_XB1_LS);       
            }
            if (get_actual(XB1_RS)) {
                combo_restart(inhibit_XB1_RS);       
            }
 
            //Face buttons
            if (get_actual(XB1_Y)) {
                combo_restart(inhibit_XB1_Y);       
            }
            if (get_actual(XB1_B)) {
                combo_restart(inhibit_XB1_B);       
            }
            if (get_actual(XB1_A)) {
                combo_restart(inhibit_XB1_A);       
            }
            if (get_actual(XB1_X)) {
                combo_restart(inhibit_XB1_X);       
            }
 
            //if XB1_MENU is released, and not after a swipe (and not held for more than a second
            //as if the player wanted to swipe but changed their mind), then do a touch pad click.
            //Also, reset the didCombo variable whether a swipe was performed or not, so on the next
            //XB1_MENU release it isn't counted as after a swipe.
            if ((!didCombo) && (time_active(XB1_VIEW) <= 1000)) {
                combo_restart(touchPadClick);
            }
            didCombo = FALSE;
        }
 
        //If the d-pad button is pressed again while the inhibitButton combos are running
        //they are ignored. This will check to see if the d-pad is pressed again while
        //XB1_MENU is not active... if so, stop the combo so the d-pad button works immidiately.
        if (event_active(XB1_UP) && !get_actual(XB1_VIEW)) {
            combo_stop(inhibit_XB1_UP);
        }
        if (event_active(XB1_DOWN) && !get_actual(XB1_VIEW)) {
            combo_stop(inhibit_XB1_DOWN);
        }
        if (event_active(XB1_LEFT) && !get_actual(XB1_VIEW)) {
            combo_stop(inhibit_XB1_LEFT);
        }
        if (event_active(XB1_RIGHT) && !get_actual(XB1_VIEW)) {
            combo_stop(inhibit_XB1_RIGHT);
        }
 
        //Joystick press
        if (event_active(XB1_LS) && !get_actual(XB1_VIEW)) {
            combo_stop(inhibit_XB1_LS);
        }
        if (event_active(XB1_RS) && !get_actual(XB1_VIEW)) {
            combo_stop(inhibit_XB1_RS);
        }
 
        //Face buttons
        if (event_active(XB1_Y) && !get_actual(XB1_VIEW)) {
            combo_stop(inhibit_XB1_Y);
        }
        if (event_active(XB1_B) && !get_actual(XB1_VIEW)) {
            combo_stop(inhibit_XB1_B);
        }
        if (event_active(XB1_A) && !get_actual(XB1_VIEW)) {
            combo_stop(inhibit_XB1_A);
        }
        if (event_active(XB1_X) && !get_actual(XB1_VIEW)) {
            combo_stop(inhibit_XB1_X);
        }
 
        //If XB1_VIEW is held down and the other buttons (d-pad) are pressed, trigger touchpad combos.
        if (get_actual(XB1_VIEW)) {
            //turn off XB1_VIEW.
            set_val(XB1_VIEW, 0.0);
 
            //If the buttons are pressed, run a combo one time due to event_active
            if (event_active(XB1_UP))
            {           
                combo_restart(comboUp);
                didCombo = TRUE;
            }
            else if (event_active(XB1_DOWN))
            {           
                combo_restart(comboDown);
                didCombo = TRUE;
            }
            else if (event_active(XB1_LEFT))
            {           
                combo_restart(comboLeft);
                didCombo = TRUE;
            }
            else if (event_active(XB1_RIGHT))
            {           
                combo_restart(comboRight);
                didCombo = TRUE;
            }
 
            //Joystick press
            if (event_active(XB1_LS))
            {           
                combo_restart(comboLs);
                didCombo = TRUE;
            }
            if (event_active(XB1_RS))
            {           
                combo_restart(comboRs);
                didCombo = TRUE;
            }
 
            //Face buttons
            if (event_active(XB1_Y))
            {           
                //combo_restart(comboY);
                combo_restart(touchPadSwipeUp);
                didCombo = TRUE;
            }
            else if (event_active(XB1_B))
            {           
                //combo_restart(comboB);
                combo_restart(touchPadSwipeRight);
                didCombo = TRUE;
            }
            else if (event_active(XB1_A))
            {           
                //combo_restart(comboA);
                combo_restart(touchPadSwipeDown);
                didCombo = TRUE;
            }
            else if (event_active(XB1_X))
            {           
                //combo_restart(comboX);
                combo_restart(touchPadSwipeLeft);
                didCombo = TRUE;
            }
 
 
            //turn off actually button press for the duration of XB1_VIEW being held. Must come after combo call.
            if (get_actual(XB1_UP)) {
                set_val(XB1_UP, 0.0);
            }
            if (get_actual(XB1_DOWN)) {
                set_val(XB1_DOWN, 0.0);
            }
            if (get_actual(XB1_LEFT)) {
                set_val(XB1_LEFT, 0.0);
            }
            if (get_actual(XB1_RIGHT)) {
                set_val(XB1_RIGHT, 0.0);
            }
 
            //Joystick press
            if (get_actual(XB1_LS)) {
                set_val(XB1_LS, 0.0);
            }
            if (get_actual(XB1_RS)) {
                set_val(XB1_RS, 0.0);
            }
 
            //Face buttons
            if (get_actual(XB1_Y)) {
                set_val(XB1_Y, 0.0);
            }
            if (get_actual(XB1_B)) {
                set_val(XB1_B, 0.0);
            }
            if (get_actual(XB1_A)) {
                set_val(XB1_A, 0.0);
            }
            if (get_actual(XB1_X)) {
                set_val(XB1_X, 0.0);
            }
 
        }
 
        //See if button 1 and 2 are being held together, if so set XB1_GUIDE to 0 and let share pass through
        if (get_actual(XB1_GUIDE) && get_actual(XB1_MENU)) {
            set_val(XB1_GUIDE, 0.0);
            set_val(XB1_MENU, 0.0);
            set_val(XB1_VIEW, 100.0);
        }
        //inhibit button 1 for 100ms to allow the user time to press button 2 in simultaneously
        inhibit(XB1_GUIDE, 30);
 
        //This works in tandem with the simultaneous home+back press = share... without this, when the
        //user lets off one button, the other would be pressed right away, leading to accidental clicks
        if (get_actual(XB1_GUIDE)) {
            if (time_release(XB1_MENU) <= 200)
            {
                set_val(XB1_GUIDE, 0.0);
            }
        }       
        if (get_actual(XB1_MENU)) {
            if (time_release(XB1_GUIDE) <= 200)
            {
                set_val(XB1_MENU, 0.0);
            }
        }
 
        //Ignore Xbox Elite paddle buttons since they pass in the buttons programed in the xbox accessory app.
        if (get_actual(XB1_P1)) {
            set_val(XB1_P1, 0.0);
        }
        if (get_actual(XB1_P2)) {
            set_val(XB1_P2, 0.0);
        }
        if (get_actual(XB1_P3)) {
            set_val(XB1_P3, 0.0);
        }
        if (get_actual(XB1_P4)) {
            set_val(XB1_P4, 0.0);
        }
    }
// ========================================================================== //
}
 
combo homeClick
{
    set_val(XB1_GUIDE, 100.0);
    wait(50);
}
combo touchPadClick
{
    set_val(PS4_TOUCH, 100.0);
    wait (50);
}
combo inhibit_XB1_UP
{
    set_val(XB1_UP, 0.0);
    wait(1000);
}
combo inhibit_XB1_DOWN
{
    set_val(XB1_DOWN, 0.0);
    wait(1000);
}
combo inhibit_XB1_LEFT
{
    set_val(XB1_LEFT, 0.0);
    //inhibit(XB1_LEFT, 1000);
    wait(1000);
}
combo inhibit_XB1_RIGHT
{
    set_val(XB1_RIGHT, 0.0);
    wait(1000);
}
 
//Joystick press
combo inhibit_XB1_LS
{
    set_val(XB1_LS, 0.0);
    wait(1000);
}
combo inhibit_XB1_RS
{
    set_val(XB1_RS, 0.0);
    wait(1000);
}
 
//Face buttons
combo inhibit_XB1_Y
{
    set_val(XB1_Y, 0.0);
    wait(1000);
}
combo inhibit_XB1_B
{
    set_val(XB1_B, 0.0);
    wait(1000);
}
combo inhibit_XB1_A
{
    set_val(XB1_A, 0.0);
    wait(1000);
}
combo inhibit_XB1_X
{
    set_val(XB1_X, 0.0);
    wait(1000);
}
 
combo holdTest
{
    set_val(PS4_TOUCH1X, 100.0);
    wait(2000);
}
combo touchPadSwipeLeft
{
    set_val(PS4_TOUCH1, 100.0);
    set_val(PS4_TOUCH1X, 95.0);
    wait(50);
    set_val(PS4_TOUCH1, 100.0);
    set_val(PS4_TOUCH1X, 0.0);
    wait(50);
    set_val(PS4_TOUCH1, 100.0);
    set_val(PS4_TOUCH1X, -95.0);
    wait(50);
    set_val(PS4_TOUCH1, 0.0);
    wait(20);
}
combo touchPadSwipeRight
{
    set_val(PS4_TOUCH1, 100.0);
    set_val(PS4_TOUCH1X, -95.0);
    wait(50);
    set_val(PS4_TOUCH1, 100.0);
    set_val(PS4_TOUCH1X, 0.0);
    wait(50);
    set_val(PS4_TOUCH1, 100.0);
    set_val(PS4_TOUCH1X, 95.0);
    wait(50);
    set_val(PS4_TOUCH1, 0.0);
    wait(20);
}
combo touchPadSwipeUp
{
    set_val(PS4_TOUCH1, 100.0);
    set_val(PS4_TOUCH1Y, 95.0);
    wait(50);
    set_val(PS4_TOUCH1, 100.0);
    set_val(PS4_TOUCH1Y, 0.0);
    wait(50);
    set_val(PS4_TOUCH1, 100.0);
    set_val(PS4_TOUCH1Y, -95.0);
    wait(50);
    set_val(PS4_TOUCH1, 0.0);
    wait(20);
}
combo touchPadSwipeDown
{
    set_val(PS4_TOUCH1, 100.0);
    set_val(PS4_TOUCH1Y, -95.0);
    wait(50);
    set_val(PS4_TOUCH1, 100.0);
    set_val(PS4_TOUCH1Y, 0.0);
    wait(50);
    set_val(PS4_TOUCH1, 100.0);
    set_val(PS4_TOUCH1Y, 95.0);
    wait(50);
    set_val(PS4_TOUCH1, 0.0);
    wait(20);
}
 
//Face button combos
combo comboUp
{
    //Combo logic
}
combo comboRight
{
    //Combo logic
    //Toggle mapping joystick to touchpad press (when holding down XB1_VIEW)
    if (touchPadJoystickMappingOn)
        touchPadJoystickMappingOn = FALSE;
    else
        touchPadJoystickMappingOn = TRUE;
 
}
combo comboDown
{
    //Combo logic
}
 
combo comboLeft
{
    //Combo logic
    //Toggle Auto Run
    if (autoRunOn)
        autoRunOn = FALSE;
    else
        autoRunOn = TRUE;
}
 
combo comboLs
{
    //Combo logic
}
 
combo comboRs
{
    //Combo logic
}

Re: Xbox One Controller looses Connenction

PostPosted: Sat Mar 16, 2019 4:56 pm
by Omnivirex
I dont know if this is my newest version of the script but the one witch i have have is allready fixed und is errorfree functional.

Re: Xbox One Controller looses Connenction

PostPosted: Sat Mar 16, 2019 4:57 pm
by Omnivirex
Also the problem with nintendo switch problem with switching the function of the xb button with rb is still there. its not solved.

Re: Xbox One Controller looses Connenction

PostPosted: Sun Mar 17, 2019 9:35 am
by J2Kbr
Please try again with the firmware just released (1.00RC rev. 5) to check if any improvement can be noticed.

More info on the firmware update here:
viewtopic.php?p=81657#p81657

Re: Xbox One Controller looses Connenction

PostPosted: Sun Mar 17, 2019 1:31 pm
by Omnivirex
Thank you i ll check .