usb + ethernet + sd card on arduino mega

I already have connected ethernet and usb host both on arduino mega, but i need to add a sd card write logs and store information

first i had had the usb and ethernet trouble because, both cards uses the same pin SS 10, i solved that by change 10 to 6 in usb host and it works perfectly but when i try to read sd card inmediatly throws an error

#include <hidboot.h>
#include <usbhub.h>
#include <Ethernet.h>
#include <SD.h>
#include <SPI.h>

#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
#define CHAR_ESC "\x1B"
#define pSd   4
#define pUsb  6
#define pEth 10

EthernetClient cliente;
byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0xF3, 0x01};   // Direccion mac del ethernet shield
IPAddress ip(192, 168, 1, 19);                       // Direccion ip del ethernet shield
IPAddress myDns(192, 168, 1, 1);                     // Direccion dns
IPAddress gate(192, 168, 1, 1);                      // Direccion gateway
IPAddress mask(255, 255, 255, 0);                    // Direccion subred
IPAddress servidor(192, 168, 1, 10);                 // Direccion del servidor

String _cadena = "";
int _indice1 = 0, _indice2 = 0;
String _v0 = "", _v1 = "", _v2 = "", _v3 = "", _v4 = "";
String _v5 = "", _v6 = "", _v7 = "", _v8 = "", _v9 = "";
String _v10 = "", _v11 = "", _v12 = "", _v13 = "", _v14 = "";
String _v15 = "", _v16 = "";
int _v17 = 0;

String _tic = "", _cam = "", _alz = "";
int _imp = 0, _cas = 0, _bas = 0;
long _bru = 0;
boolean _ade = false;

long _tiempoEstado = 0;

boolean estadoTicket = false, estadoCamion = false, estadoAlzadora = false;
boolean estadoOtros = false, estadoChecar = false, estadoPeso = false;
boolean estadoPantalla = true;

String _dato = "";
boolean _lectura = false;

class KbdRptParser : public KeyboardReportParser
{
  void PrintKey(uint8_t mod, uint8_t key);
  protected:
    virtual void OnControlKeysChanged(uint8_t before, uint8_t after);
    virtual void OnKeyDown	(uint8_t mod, uint8_t key);
    virtual void OnKeyUp	(uint8_t mod, uint8_t key);
    virtual void OnKeyPressed(uint8_t key);
};

USB    Usb;
USBHub Hub(&Usb);
HIDBoot<HID_PROTOCOL_KEYBOARD | HID_PROTOCOL_KEYBOARD> HidComposite(&Usb);
HIDBoot<HID_PROTOCOL_KEYBOARD> HidKeyboard(&Usb);
uint32_t next_time;
KbdRptParser KbdPrs;
void setup()
{
  Serial.begin(57600);
  Serial1.begin(9600, SERIAL_7E1);
  Serial2.begin(2400);
  Serial3.begin(2400);
  delay(200);  

  pinMode(pSd, OUTPUT);
  pinMode(pEth, OUTPUT);
  pinMode(pUsb, OUTPUT);
  
  digitalWrite(pSd, HIGH);
  digitalWrite(pEth, HIGH);
  digitalWrite(pUsb, HIGH);
  delay(10);
  
  
  digitalWrite(pUsb, LOW);
  delay(10);
  if(Usb.Init() == -1)
  {
    Serial.println("Conexion USB no inicializada");
  }
  delay(200);
  digitalWrite(pUsb, HIGH);
  delay(10);
  
  
  digitalWrite(pEth, LOW);
  delay(10);  
  Ethernet.begin(mac, ip, myDns, gate, mask);
  delay(2000);
  digitalWrite(pEth, HIGH);
  delay(10);
  
  
  digitalWrite(pSd, LOW);
  delay(10);
  if(!SD.begin())
  {
    Serial.println("Error al leer la tarjeta SD.");
    return;
  }
  delay(200);
  digitalWrite(pSd, HIGH);
  delay(10);


  next_time = millis() + 5000;
  
  HidComposite.SetReportParser(0, (HIDReportParser*)&KbdPrs);
  HidComposite.SetReportParser(1, (HIDReportParser*)&KbdPrs);
  HidKeyboard.SetReportParser(0, (HIDReportParser*)&KbdPrs);
  HidKeyboard.SetReportParser(1, (HIDReportParser*)&KbdPrs);
  delay(200);
}

but when i try to read sd card inmediatly throws an error

Throw it back.

Why are you including spi4teensy3 on a Mega?

Some clue as to what error is thrown by what would be useful.